memcache.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package template
  2. import (
  3. "context"
  4. "go-common/app/interface/main/creative/model/template"
  5. "go-common/library/cache/memcache"
  6. "go-common/library/log"
  7. "strconv"
  8. )
  9. const (
  10. _prefix = "tpl_"
  11. )
  12. func keyTpl(mid int64) string {
  13. return _prefix + strconv.FormatInt(mid, 10)
  14. }
  15. // tplCache get tpl cache.
  16. func (d *Dao) tplCache(c context.Context, mid int64) (tps []*template.Template, err error) {
  17. var (
  18. conn = d.mc.Get(c)
  19. r *memcache.Item
  20. )
  21. defer conn.Close()
  22. // get cache
  23. r, err = conn.Get(keyTpl(mid))
  24. if err != nil {
  25. if err == memcache.ErrNotFound {
  26. err = nil
  27. } else {
  28. log.Error("memcache conn.Get2(%d) error(%v)", mid, err)
  29. }
  30. return
  31. }
  32. tps = []*template.Template{}
  33. if err = conn.Scan(r, &tps); err != nil {
  34. log.Error("tplCache json.Unmarshal(%s) error(%v)", r.Value, err)
  35. tps = nil
  36. }
  37. return
  38. }
  39. // addTplCache add tpl cache.
  40. func (d *Dao) addTplCache(c context.Context, mid int64, tps []*template.Template) (err error) {
  41. var (
  42. key = keyTpl(mid)
  43. )
  44. conn := d.mc.Get(c)
  45. defer conn.Close()
  46. if err = conn.Set(&memcache.Item{Key: key, Object: tps, Flags: memcache.FlagJSON, Expiration: d.mcExpire}); err != nil {
  47. log.Error("tplCache memcache.Set(%v) error(%v)", key, err)
  48. }
  49. return
  50. }
  51. // delTplCache del tpl cache.
  52. func (d *Dao) delTplCache(c context.Context, mid int64) (err error) {
  53. conn := d.mc.Get(c)
  54. defer conn.Close()
  55. // del cache
  56. if err = conn.Delete(keyTpl(mid)); err == memcache.ErrNotFound {
  57. err = nil
  58. }
  59. return
  60. }