77 lines
1.8 KiB
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
|
||
|
}
|