diff --git a/handler/tool.go b/handler/tool.go index 8596646..e414c89 100644 --- a/handler/tool.go +++ b/handler/tool.go @@ -214,9 +214,14 @@ func GetRedis(c *gin.Context) { //解析请求参数 var req SetRedisReq if err := c.ShouldBind(&req); err == nil { - code, message := service.GetToolRedis(req.Key) - req.Value = message - c.JSON(http.StatusOK, gin.H{"code": code, "message": message, "data": req}) + if req.Option == "one" { + code, message := service.GetToolRedis(req.Key) + req.Value = message + c.JSON(http.StatusOK, gin.H{"code": code, "message": message, "data": req}) + } else if req.Option == "all" { + code, message, data := service.GetAllRedis() + c.JSON(http.StatusOK, gin.H{"code": code, "message": message, "data": data}) + } } else { c.JSON(http.StatusOK, gin.H{"error": "parameter error", "code": proto.ParameterError, "message": "failed"}) return diff --git a/service/toolService.go b/service/toolService.go index bc78889..e67de01 100644 --- a/service/toolService.go +++ b/service/toolService.go @@ -68,3 +68,11 @@ func GetToolRedis(key string) (code int, message string) { return proto.SuccessCode, val } } + +func GetAllRedis() (code int, msg string, data []worker.RedisInfo) { + data, err := worker.GetAllRedisInfo() + if err != nil { + return proto.OperationFailed, err.Error(), nil + } + return proto.SuccessCode, "success", data +} diff --git a/worker/redis.go b/worker/redis.go index d551f3e..89a1300 100644 --- a/worker/redis.go +++ b/worker/redis.go @@ -460,3 +460,39 @@ func GetRedisSetUnion(key1 string, key2 string) []string { } return val } + +type RedisInfo struct { + Key string + Value string + Expire time.Duration +} + +// 获取所有的key和value,及其对应的过期时间 +func GetAllRedisInfo() ([]RedisInfo, error) { + ctx := context.Background() + keys, err := RedisClient.Keys(ctx, "*").Result() + if err != nil { + fmt.Println("Error getting key: %v", err) + return nil, err + } + var redisInfos []RedisInfo + for _, key := range keys { + val, err := RedisClient.Get(ctx, key).Result() + if err != nil { + fmt.Println("Error getting key: %v", err) + return nil, err + } + expire, err := RedisClient.TTL(ctx, key).Result() + if err != nil { + fmt.Println("Error getting key: %v", err) + return nil, err + } + redisInfo := RedisInfo{ + Key: key, + Value: val, + Expire: expire, + } + redisInfos = append(redisInfos, redisInfo) + } + return redisInfos, nil +}