manager_redis.go 789 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package limiteditems
  2. import (
  3. "bet24.com/log"
  4. "bet24.com/redis"
  5. "encoding/json"
  6. "time"
  7. )
  8. const refresh_config_sec = 600
  9. func getRedisKey() string {
  10. return "limiteditems:useritems"
  11. }
  12. func (m *manager) loadUserItemsFromRedis() {
  13. data, ok := redis.String_Get(getRedisKey())
  14. if data == "" || !ok {
  15. return
  16. }
  17. m.lock.Lock()
  18. err := json.Unmarshal([]byte(data), &m.userItems)
  19. m.lock.Unlock()
  20. if err != nil {
  21. log.Release("manager.loadUserItemsFromRedis Unmarshal failed err:%v,%s", err, data)
  22. return
  23. }
  24. }
  25. func (m *manager) flush() {
  26. time.AfterFunc(refresh_config_sec*time.Second, m.flush)
  27. m.lock.RLock()
  28. if !m.isDirty {
  29. m.lock.RUnlock()
  30. return
  31. }
  32. m.isDirty = false
  33. d, _ := json.Marshal(m.userItems)
  34. m.lock.RUnlock()
  35. go redis.String_Set(getRedisKey(), string(d))
  36. }