Redis数据获取报WRONGTYPE错误,如何获取目标键对应值?
解决Redis WRONGTYPE错误的方法
这个错误的核心原因很明确:你调用的get()方法仅适用于读取字符串类型的Redis键值,但asgi:group:348对应的并不是字符串类型数据,因此触发类型不匹配错误。
解决步骤:
先确认键的数据类型
执行以下代码查询目标键的具体类型:print(self.redis.type("asgi:group:348"))返回结果会是
b'hash'、b'list'、b'set'这类标识,对应Redis的不同数据类型。根据类型使用对应读取方法
- 如果是哈希(hash)类型:用
hgetall()获取所有键值对,或hget()获取单个字段# 获取哈希全部内容 print(self.redis.hgetall("asgi:group:348")) # 获取哈希指定字段的值 print(self.redis.hget("asgi:group:348", "目标字段名")) - 如果是列表(list)类型:用
lrange()获取全部元素(0到-1表示取所有)print(self.redis.lrange("asgi:group:348", 0, -1)) - 如果是集合(set)类型:用
smembers()获取所有成员print(self.redis.smembers("asgi:group:348")) - 如果是有序集合(zset)类型:用
zrange()按排名获取成员,或zrangebyscore()按分数范围获取# 获取所有成员及对应分数 print(self.redis.zrange("asgi:group:348", 0, -1, withscores=True)) - 如果是流(stream)类型:用
xrange()获取流内消息print(self.redis.xrange("asgi:group:348", min="-", max="+"))
- 如果是哈希(hash)类型:用
内容的提问来源于stack exchange,提问作者whitebear
相关产品推荐
相关产品推荐

