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 +}