package utils import ( "context" "encoding/json" "time" "newaterobot-process/database" ) // RedisUtil Redis工具类 type RedisUtil struct{} var redisUtil = new(RedisUtil) // GetRedisUtil 获取Redis工具实例 func GetRedisUtil() *RedisUtil { return redisUtil } // SetString 设置字符串值 func (r *RedisUtil) SetString(key, value string, expiration time.Duration) error { return database.RedisClient.Set(context.Background(), key, value, expiration).Err() } // GetString 获取字符串值 func (r *RedisUtil) GetString(key string) (string, error) { return database.RedisClient.Get(context.Background(), key).Result() } // SetObject 设置对象值 func (r *RedisUtil) SetObject(key string, obj interface{}, expiration time.Duration) error { jsonData, err := json.Marshal(obj) if err != nil { return err } return database.RedisClient.Set(context.Background(), key, jsonData, expiration).Err() } // GetObject 获取对象值 func (r *RedisUtil) GetObject(key string, obj interface{}) error { jsonData, err := database.RedisClient.Get(context.Background(), key).Result() if err != nil { return err } return json.Unmarshal([]byte(jsonData), obj) } // Exists 检查键是否存在 func (r *RedisUtil) Exists(key string) (bool, error) { count, err := database.RedisClient.Exists(context.Background(), key).Result() if err != nil { return false, err } return count > 0, nil } // Del 删除键 func (r *RedisUtil) Del(key string) error { return database.RedisClient.Del(context.Background(), key).Err() } // Expire 设置键过期时间 func (r *RedisUtil) Expire(key string, expiration time.Duration) error { return database.RedisClient.Expire(context.Background(), key, expiration).Err() } // SetExpire 设置带过期时间的键值对 func (r *RedisUtil) SetExpire(key string, value interface{}, expiration time.Duration) error { return database.RedisClient.SetEX(context.Background(), key, value, expiration).Err() }