recommend.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package dao
  2. import (
  3. "context"
  4. "fmt"
  5. "go-common/library/cache/redis"
  6. "go-common/library/log"
  7. )
  8. // AddcategoriesAuthors .
  9. func (d *Dao) AddcategoriesAuthors(c context.Context, data map[int64][]int64) (err error) {
  10. if len(data) == 0 {
  11. return
  12. }
  13. conn := d.artRedis.Get(c)
  14. defer conn.Close()
  15. for k, x := range data {
  16. key := fmt.Sprintf("recommends:authors:%d", k)
  17. args := redis.Args{}.Add(key)
  18. for _, v := range x {
  19. args = args.Add(fmt.Sprintf("%d", v))
  20. }
  21. if err = conn.Send("DEL", key); err != nil {
  22. log.Error("conn.Send(SADD, %s, %+v) error(%v)", key, args, err)
  23. PromError("redis:分区作者数据")
  24. return
  25. }
  26. if err = conn.Send("SADD", args...); err != nil {
  27. log.Error("conn.Send(SADD, %s, %+v) error(%v)", key, args, err)
  28. PromError("redis:分区作者数据")
  29. return
  30. }
  31. if err = conn.Send("EXPIRE", key, d.c.Job.RecommendExpire); err != nil {
  32. log.Error("conn.Send(EXPIRE, %s) error(%v)", d.c.Job.RecommendExpire, err)
  33. PromError("redis:分区作者数据")
  34. return
  35. }
  36. if err = conn.Flush(); err != nil {
  37. log.Error("conn.Flush error(%v)", err)
  38. PromError("redis:分区作者数据")
  39. return
  40. }
  41. for i := 0; i < 3; i++ {
  42. if _, err = conn.Receive(); err != nil {
  43. log.Error("conn.Receive error(%v)", err)
  44. PromError("redis:分区作者数据")
  45. return
  46. }
  47. }
  48. }
  49. return
  50. }
  51. // AddAuthorMostCategories .
  52. func (d *Dao) AddAuthorMostCategories(c context.Context, mid int64, categories []int64) (err error) {
  53. if len(categories) == 0 {
  54. return
  55. }
  56. conn := d.artRedis.Get(c)
  57. defer conn.Close()
  58. key := fmt.Sprintf("author:categories:%d", mid)
  59. args := redis.Args{}.Add(key)
  60. for _, v := range categories {
  61. args = args.Add(fmt.Sprintf("%d", v))
  62. }
  63. if err = conn.Send("DEL", key); err != nil {
  64. log.Error("conn.Send(SADD, %s, %+v) error(%v)", key, args, err)
  65. PromError("redis:作者分区数据")
  66. return
  67. }
  68. if err = conn.Send("SADD", args...); err != nil {
  69. log.Error("conn.Send(SADD, %s, %+v) error(%v)", key, args, err)
  70. PromError("redis:作者分区数据")
  71. return
  72. }
  73. if err = conn.Send("EXPIRE", key, d.c.Job.RecommendExpire); err != nil {
  74. log.Error("conn.Send(EXPIRE, %s) error(%v)", d.c.Job.RecommendExpire, err)
  75. PromError("redis:作者分区数据")
  76. return
  77. }
  78. if err = conn.Flush(); err != nil {
  79. log.Error("conn.Flush error(%v)", err)
  80. PromError("redis:作者分区数据")
  81. return
  82. }
  83. for i := 0; i < 3; i++ {
  84. if _, err = conn.Receive(); err != nil {
  85. log.Error("conn.Receive error(%v)", err)
  86. PromError("redis:作者分区数据")
  87. return
  88. }
  89. }
  90. return
  91. }