online_redis.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package dao
  2. import (
  3. "context"
  4. "encoding/json"
  5. "go-common/app/interface/main/web/model"
  6. "go-common/library/cache/redis"
  7. "go-common/library/log"
  8. )
  9. const _onlineListKey = "olk"
  10. // OnlineListBakCache get online list bak cache.
  11. func (d *Dao) OnlineListBakCache(c context.Context) (rs []*model.OnlineArc, err error) {
  12. conn := d.redisBak.Get(c)
  13. defer conn.Close()
  14. var values []byte
  15. if values, err = redis.Bytes(conn.Do("GET", _onlineListKey)); err != nil {
  16. if err == redis.ErrNil {
  17. err = nil
  18. log.Warn("OnlineListBakCache redis (%s) return nil ", _onlineListKey)
  19. } else {
  20. log.Error("OnlineListBakCache conn.Do(GET,%s) error(%v)", _onlineListKey, err)
  21. }
  22. return
  23. }
  24. if err = json.Unmarshal(values, &rs); err != nil {
  25. log.Error("OnlineListBakCache json.Unmarshal(%v) error(%v)", values, err)
  26. }
  27. return
  28. }
  29. // SetOnlineListBakCache set online list bak cache.
  30. func (d *Dao) SetOnlineListBakCache(c context.Context, data []*model.OnlineArc) (err error) {
  31. conn := d.redisBak.Get(c)
  32. defer conn.Close()
  33. var bs []byte
  34. if bs, err = json.Marshal(data); err != nil {
  35. log.Error("SetOnlineListBakCache json.Marshal(%v) error(%v)", data, err)
  36. return
  37. }
  38. if err = conn.Send("SET", _onlineListKey, bs); err != nil {
  39. log.Error("SetOnlineListBakCache conn.Send(SET,%s,%s) error(%v)", _onlineListKey, string(bs), err)
  40. return
  41. }
  42. if err = conn.Send("EXPIRE", _onlineListKey, d.redisOlListBakExpire); err != nil {
  43. log.Error("SetOnlineListBakCache conn.Send(EXPIRE,%s,%d) error(%v)", _onlineListKey, d.redisOlListBakExpire, err)
  44. return
  45. }
  46. if err = conn.Flush(); err != nil {
  47. log.Error("SetOnlineListBakCache conn.Flush error(%v)", err)
  48. return
  49. }
  50. for i := 0; i < 2; i++ {
  51. if _, err = conn.Receive(); err != nil {
  52. log.Error("SetOnlineListBakCache conn.Recevie(%d) error(%v0", i, err)
  53. }
  54. }
  55. return
  56. }