package util import ( "ego/pkg/logger" "time" "github.com/gin-gonic/gin" "ego/internal/cache" "github.com/redis/go-redis/v9" "go.uber.org/zap" ) // Set 设置键值对到Redis func Set(ctx *gin.Context, key string, value any, expiration time.Duration) error { err := cache.RedisClient.Set(ctx, key, value, expiration).Err() if err != nil { logger.Error(ctx, "Redis Set 失败", zap.Error(err)) return err } return nil } // Get 从Redis获取键值对 func Get(ctx *gin.Context, key string) (string, error) { val, err := cache.RedisClient.Get(ctx, key).Result() if err == redis.Nil { logger.Info(ctx, "Redis key 不存在", zap.String("key", key)) return "", nil } else if err != nil { logger.Error(ctx, "Redis Get 失败", zap.Error(err)) return "", err } return val, nil } // Del 从Redis删除键 func Del(ctx *gin.Context, key string) error { err := cache.RedisClient.Del(ctx, key).Err() if err != nil { logger.Error(ctx, "Redis Del 失败", zap.Error(err)) return err } return nil } // Exists 检查Redis中是否存在键 func Exists(ctx *gin.Context, key string) (bool, error) { val, err := cache.RedisClient.Exists(ctx, key).Result() if err != nil { logger.Error(ctx, "Redis Exists 失败", zap.Error(err)) return false, err } return val > 0, nil } // Incr 对Redis中的键进行自增操作 func Incr(ctx *gin.Context, key string) (int64, error) { val, err := cache.RedisClient.Incr(ctx, key).Result() if err != nil { logger.Error(ctx, "Redis Incr 失败", zap.Error(err)) return 0, err } return val, nil } // Decr 对Redis中的键进行自减操作 func Decr(ctx *gin.Context, key string) (int64, error) { val, err := cache.RedisClient.Decr(ctx, key).Result() if err != nil { logger.Error(ctx, "Redis Decr 失败", zap.Error(err)) return 0, err } return val, nil }