redis.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package utils
  2. import (
  3. "context"
  4. "encoding/json"
  5. "time"
  6. "newaterobot-process/database"
  7. )
  8. // RedisUtil Redis工具类
  9. type RedisUtil struct{}
  10. var redisUtil = new(RedisUtil)
  11. // GetRedisUtil 获取Redis工具实例
  12. func GetRedisUtil() *RedisUtil {
  13. return redisUtil
  14. }
  15. // SetString 设置字符串值
  16. func (r *RedisUtil) SetString(key, value string, expiration time.Duration) error {
  17. return database.RedisClient.Set(context.Background(), key, value, expiration).Err()
  18. }
  19. // GetString 获取字符串值
  20. func (r *RedisUtil) GetString(key string) (string, error) {
  21. return database.RedisClient.Get(context.Background(), key).Result()
  22. }
  23. // SetObject 设置对象值
  24. func (r *RedisUtil) SetObject(key string, obj interface{}, expiration time.Duration) error {
  25. jsonData, err := json.Marshal(obj)
  26. if err != nil {
  27. return err
  28. }
  29. return database.RedisClient.Set(context.Background(), key, jsonData, expiration).Err()
  30. }
  31. // GetObject 获取对象值
  32. func (r *RedisUtil) GetObject(key string, obj interface{}) error {
  33. jsonData, err := database.RedisClient.Get(context.Background(), key).Result()
  34. if err != nil {
  35. return err
  36. }
  37. return json.Unmarshal([]byte(jsonData), obj)
  38. }
  39. // Exists 检查键是否存在
  40. func (r *RedisUtil) Exists(key string) (bool, error) {
  41. count, err := database.RedisClient.Exists(context.Background(), key).Result()
  42. if err != nil {
  43. return false, err
  44. }
  45. return count > 0, nil
  46. }
  47. // Del 删除键
  48. func (r *RedisUtil) Del(key string) error {
  49. return database.RedisClient.Del(context.Background(), key).Err()
  50. }
  51. // Expire 设置键过期时间
  52. func (r *RedisUtil) Expire(key string, expiration time.Duration) error {
  53. return database.RedisClient.Expire(context.Background(), key, expiration).Err()
  54. }
  55. // SetExpire 设置带过期时间的键值对
  56. func (r *RedisUtil) SetExpire(key string, value interface{}, expiration time.Duration) error {
  57. return database.RedisClient.SetEX(context.Background(), key, value, expiration).Err()
  58. }