DeployHelper/internal/util/redis_util.go

77 lines
1.8 KiB
Go

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
}