mango_mc.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package thirdp
  2. import (
  3. "context"
  4. "fmt"
  5. "go-common/library/cache/memcache"
  6. "go-common/library/log"
  7. )
  8. func mangoMCKey(isPGC bool, sid int64) string {
  9. if isPGC {
  10. return fmt.Sprintf("%s_%d", "mango_pgc", sid)
  11. }
  12. return fmt.Sprintf("%s_%d", "mango_ugc", sid)
  13. }
  14. // SetSnCnt save season/archive count
  15. func (d *Dao) SetSnCnt(c context.Context, isPGC bool, sid int64, cnt int) (err error) {
  16. var (
  17. key = mangoMCKey(isPGC, sid)
  18. conn = d.mc.Get(c)
  19. )
  20. defer conn.Close()
  21. if err = conn.Set(&memcache.Item{Key: key, Object: cnt, Flags: memcache.FlagJSON, Expiration: d.cntExpire}); err != nil {
  22. log.Error("conn.Set error(%v)", err)
  23. return
  24. }
  25. return
  26. }
  27. // GetSnCnt get season/archive count cache.
  28. func (d *Dao) GetSnCnt(c context.Context, isPGC bool, sid int64) (cnt int, err error) {
  29. var (
  30. key = mangoMCKey(isPGC, sid)
  31. conn = d.mc.Get(c)
  32. item *memcache.Item
  33. )
  34. defer conn.Close()
  35. if item, err = conn.Get(key); err != nil {
  36. if err != memcache.ErrNotFound {
  37. log.Error("conn.Get(%s) error(%v)", key, err)
  38. }
  39. return
  40. }
  41. if err = conn.Scan(item, &cnt); err != nil {
  42. log.Error("conn.Get(%s) error(%v)", key, err)
  43. }
  44. return
  45. }
  46. // LoadSnCnt loads season's ep cnt, or archive's video cnt
  47. func (d *Dao) LoadSnCnt(ctx context.Context, isPGC bool, sid int64) (cnt int, err error) {
  48. if cnt, err = d.GetSnCnt(ctx, isPGC, sid); err == nil { // not found or MC error
  49. return
  50. }
  51. log.Warn("LoadSnCnt IsPGC %v, Get Sid [%d] from MC Err (%v)", isPGC, sid, err) // cache set/get error
  52. if cnt, err = d.MangoSnCnt(ctx, isPGC, sid); err != nil {
  53. return
  54. }
  55. d.addCache(func() {
  56. d.SetSnCnt(ctx, isPGC, sid, cnt)
  57. })
  58. return
  59. }