memcache.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package dao
  2. import (
  3. "context"
  4. "go-common/app/service/main/identify-game/model"
  5. "go-common/library/cache/memcache"
  6. "go-common/library/log"
  7. )
  8. // SetAccessCache .
  9. func (d *Dao) SetAccessCache(c context.Context, key string, res *model.AccessInfo) (err error) {
  10. if res.Expires < 0 {
  11. log.Error("identify-game expire error(expires:%d)", res.Expires)
  12. return
  13. }
  14. item := &memcache.Item{Key: key, Object: res, Flags: memcache.FlagProtobuf, Expiration: int32(res.Expires)}
  15. conn := d.mc.Get(c)
  16. defer conn.Close()
  17. if err = conn.Set(item); err != nil {
  18. log.Error("identify-game set error(%s,%d,%v)", key, res.Expires, err)
  19. }
  20. return
  21. }
  22. // AccessCache .
  23. func (d *Dao) AccessCache(c context.Context, key string) (res *model.AccessInfo, err error) {
  24. conn := d.mc.Get(c)
  25. defer conn.Close()
  26. r, err := conn.Get(key)
  27. if err != nil {
  28. if err == memcache.ErrNotFound {
  29. missedCount.Incr("access_cache")
  30. err = nil
  31. return
  32. }
  33. log.Error("conn.Get(%s) error(%v)", key, err)
  34. return
  35. }
  36. res = &model.AccessInfo{}
  37. if err = conn.Scan(r, res); err != nil {
  38. PromError("mc:json解析失败")
  39. log.Error("conn.Scan(%v) error(%v)", string(r.Value), err)
  40. return
  41. }
  42. cachedCount.Incr("access_cache")
  43. return
  44. }
  45. // DelAccessCache del cache.
  46. func (d *Dao) DelAccessCache(c context.Context, key string) (err error) {
  47. conn := d.mc.Get(c)
  48. defer conn.Close()
  49. if err = conn.Delete(key); err != nil {
  50. if err == memcache.ErrNotFound {
  51. err = nil
  52. return
  53. }
  54. log.Error("conn.Delete(%s) error(%v)", key, err)
  55. }
  56. return
  57. }