redis_like.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package dao
  2. import (
  3. "context"
  4. "fmt"
  5. "go-common/library/cache/redis"
  6. "go-common/library/log"
  7. )
  8. func maxLikeKey(aid int64) string {
  9. return fmt.Sprintf(_prefixMaxLike, aid)
  10. }
  11. // MaxLikeCache max like cache
  12. func (d *Dao) MaxLikeCache(c context.Context, aid int64) (res int64, err error) {
  13. var (
  14. conn = d.redis.Get(c)
  15. key = maxLikeKey(aid)
  16. )
  17. defer conn.Close()
  18. if res, err = redis.Int64(conn.Do("GET", key)); err != nil {
  19. if err == redis.ErrNil {
  20. err = nil
  21. } else {
  22. PromError("redis:获取点赞最大数")
  23. log.Error("MaxLikeMCache GET(%s) error(%+v)", key, err)
  24. }
  25. return
  26. }
  27. return
  28. }
  29. // ExpireMaxLikeCache expire max like cache
  30. func (d *Dao) ExpireMaxLikeCache(c context.Context, aid int64) (res bool, err error) {
  31. var (
  32. conn = d.redis.Get(c)
  33. key = maxLikeKey(aid)
  34. )
  35. defer conn.Close()
  36. if res, err = redis.Bool(conn.Do("EXPIRE", key, d.redisMaxLikeExpire)); err != nil {
  37. PromError("redis:Expire点赞最大数")
  38. log.Error("MaxLikeCache EXPIRE(%s) error(%+v)", key, err)
  39. }
  40. return
  41. }
  42. // SetMaxLikeCache set max like cache
  43. func (d *Dao) SetMaxLikeCache(c context.Context, aid int64, value int64) (err error) {
  44. var (
  45. conn = d.redis.Get(c)
  46. key = maxLikeKey(aid)
  47. count int
  48. )
  49. defer conn.Close()
  50. if err = conn.Send("SET", key, value); err != nil {
  51. PromError("redis:设定点赞最大数")
  52. log.Error("conn.Send(SET, %s, %s) error(%+v)", key, value, err)
  53. return
  54. }
  55. count++
  56. if err = conn.Send("EXPIRE", key, d.redisMaxLikeExpire); err != nil {
  57. PromError("redis:Expire点赞最大数")
  58. log.Error("MaxLikeCache EXPIRE(%s) error(%+v)", key, err)
  59. return
  60. }
  61. count++
  62. if err = conn.Flush(); err != nil {
  63. PromError("redis:设定点赞最大数flush")
  64. log.Error("conn.Flush error(%+v)", err)
  65. return
  66. }
  67. for i := 0; i < count; i++ {
  68. if _, err = conn.Receive(); err != nil {
  69. PromError("redis:设定点赞最大数receive")
  70. log.Error("conn.Receive error(%+v)", err)
  71. return
  72. }
  73. }
  74. return
  75. }