From a6ce904059db8cb5d57d8468b62d0ad5bdd46356 Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Sat, 21 Dec 2024 17:36:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9redis=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=89=80=E6=9C=89=E9=94=AE=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worker/redis.go | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/worker/redis.go b/worker/redis.go index 89a1300..9e660fa 100644 --- a/worker/redis.go +++ b/worker/redis.go @@ -477,7 +477,8 @@ func GetAllRedisInfo() ([]RedisInfo, error) { } var redisInfos []RedisInfo for _, key := range keys { - val, err := RedisClient.Get(ctx, key).Result() + //先查看key类型,再根据类型获取value + val, err := getKeyTypeAndData(key) if err != nil { fmt.Println("Error getting key: %v", err) return nil, err @@ -496,3 +497,27 @@ func GetAllRedisInfo() ([]RedisInfo, error) { } return redisInfos, nil } + +func getKeyTypeAndData(key string) (string, error) { + ctx := context.Background() + key_type := RedisClient.Type(ctx, key).Val() + var val interface{} + var err error + switch key_type { + case "string": + val, err = RedisClient.Get(ctx, key).Result() + case "hash": + val, err = RedisClient.HGetAll(ctx, key).Result() + case "list": + val, err = RedisClient.LRange(ctx, key, 0, -1).Result() + case "set": + val, err = RedisClient.SMembers(ctx, key).Result() + case "zset": + val, err = RedisClient.ZRange(ctx, key, 0, -1).Result() + case "bitmap": + val, err = RedisClient.GetBit(ctx, key, 0).Result() + default: + val = "unknown type" + } + return fmt.Sprintf("%v", val), err +}