redisStateMng.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package redisclient
  2. import (
  3. "context"
  4. "github.com/demdxx/gocast"
  5. "github.com/redis/go-redis/v9"
  6. "strconv"
  7. "time"
  8. )
  9. // redis 状态值管理
  10. const (
  11. TransferCallbackHandlerRedisStateKey = "TransferCallbackHandlerRedisStateKey"
  12. )
  13. var keyMap = map[string]interface{}{
  14. TransferCallbackHandlerRedisStateKey: "false",
  15. }
  16. // 服务重启 初始化状态
  17. func stateInit(rds redis.UniversalClient) {
  18. for key, val := range keyMap {
  19. err := rds.Set(context.Background(), key, val, time.Duration(0)).Err()
  20. if err != nil {
  21. panic(err)
  22. }
  23. }
  24. }
  25. func GetBoolFromRedis(key string) (bool, error) {
  26. ctx := context.Background()
  27. val, err := DefaultClient().Get(ctx, key).Result()
  28. if err != nil {
  29. // 不存在则初始化一个值
  30. if err == redis.Nil {
  31. if err = DefaultClient().Set(ctx, key, gocast.ToString(false), 0).Err(); err != nil {
  32. return false, err
  33. }
  34. } else {
  35. return false, err
  36. }
  37. }
  38. return strconv.ParseBool(val)
  39. }
  40. func SetBoolRoRedis(key string, ok bool) error {
  41. ctx := context.Background()
  42. return DefaultClient().Set(ctx, key, gocast.ToString(ok), time.Duration(0)).Err()
  43. }