redis.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package redis
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "github.com/go-redis/redis/v8"
  7. "time"
  8. "zhiyuan/pkg/config"
  9. "zhiyuan/pkg/logger"
  10. )
  11. var rdb *redis.Client
  12. var ctx = context.Background()
  13. var Z *redis.Z
  14. func Setup() {
  15. rdb = redis.NewClient(&redis.Options{
  16. Addr: config.Cfg.Redis.Host,
  17. Password: config.Cfg.Redis.Password,
  18. DB: 0, // use default DB
  19. })
  20. rdb.Ping(ctx)
  21. }
  22. func getKey(key string) string {
  23. return config.Cfg.Redis.Prefix + key
  24. }
  25. func Set(key string, data interface{}, sec int) error {
  26. jsonData, err := json.Marshal(data)
  27. if err != nil {
  28. return err
  29. }
  30. err = rdb.Set(ctx, getKey(key), string(jsonData), time.Duration(sec)*time.Second).Err()
  31. if err != nil {
  32. logger.Sugar.Error(err.Error())
  33. return err
  34. }
  35. return nil
  36. }
  37. func SetBasic(key string, data interface{}, sec int) error {
  38. err := rdb.Set(ctx, getKey(key), data, time.Duration(sec)*time.Second).Err()
  39. if err != nil {
  40. logger.Sugar.Error(err.Error())
  41. return err
  42. }
  43. return nil
  44. }
  45. func Get(key string) (string, error) {
  46. val, err := rdb.Get(ctx, getKey(key)).Result()
  47. if err != nil {
  48. logger.Sugar.Error("Get key[" + key + "] error:" + err.Error())
  49. return "", err
  50. }
  51. return val, nil
  52. }
  53. func LPush(key string, val []interface{}) error {
  54. err := rdb.LPush(ctx, getKey(key), val).Err()
  55. if err != nil {
  56. logger.Sugar.Error(err.Error())
  57. return err
  58. }
  59. return nil
  60. }
  61. func HSet(key string, val []interface{}, sec int) error {
  62. err := rdb.HSet(ctx, getKey(key), val).Err()
  63. Expire(key, sec)
  64. if err != nil {
  65. logger.Sugar.Error(err.Error())
  66. return err
  67. }
  68. return nil
  69. }
  70. func HGet(key string, field string) (string, error) {
  71. val, err := rdb.HGet(ctx, getKey(key), field).Result()
  72. if err != nil {
  73. logger.Sugar.Error(err.Error())
  74. return "", err
  75. }
  76. return val, nil
  77. }
  78. func HGetAll(key string) (map[string]string, error) {
  79. val, err := rdb.HGetAll(ctx, getKey(key)).Result()
  80. if err != nil {
  81. logger.Sugar.Error(err.Error())
  82. return nil, err
  83. }
  84. return val, nil
  85. }
  86. func SAdd(key string, val []interface{}, sec int) {
  87. err := rdb.SAdd(ctx, getKey(key), val).Err()
  88. Expire(getKey(key), sec)
  89. if err != nil {
  90. logger.Sugar.Error(err.Error())
  91. }
  92. }
  93. func SMembers(key string) ([]string, error) {
  94. val, err := rdb.SMembers(ctx, getKey(key)).Result()
  95. if err != nil {
  96. logger.Sugar.Error(err.Error())
  97. return nil, err
  98. }
  99. return val, nil
  100. }
  101. func Del(keys string) {
  102. rdb.Del(ctx, getKey(keys))
  103. }
  104. func Expire(key string, sec int) {
  105. if sec != -1 {
  106. rdb.Expire(ctx, getKey(key), time.Duration(sec)*time.Second)
  107. }
  108. }
  109. func ExpireAt(key string, tm time.Time) {
  110. rdb.ExpireAt(ctx, getKey(key), tm)
  111. }
  112. func TTL(key string) (time.Duration, error) {
  113. expire, err := rdb.TTL(ctx, getKey(key)).Result()
  114. fmt.Printf("expire=%v err=%v\n", expire, err)
  115. return expire, err
  116. }