Python-redis keys()返回字节对象列表,而不是字符串解决办法
Posted youzhouliu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-redis keys()返回字节对象列表,而不是字符串解决办法相关的知识,希望对你有一定的参考价值。
问题现象:
使用类似如下的语句向 redis 插入数据和取得数据时:
redis.set("abc", "'ab': 'c'")
redis.get("abc")
执行上述语句,输出结果类似如下:
b"'ab': 'c'"
问题原因:
由于某些原因,redis.keys() 返回带有字节对象的列表,例如[b'abcde']
,但一般我们需要的是是一个str
对象。
解决方式:
1、初始化 redis 时做类似如下操作:
r = redis.StrictRedis('localhost', 6379, charset="utf-8", decode_responses=True)
即配置 Redis 客户端,以使用构造函数的 decode_responses
参数将响应从字节自动转换为字符串 StrictRedis。
2、拿到结果后,先执行 decode 操作,再执行 dumps ,最后执行 loads,示例代码如下:
json.loads(json.dumps(json_obj.decode()))
其中 json_obj 为需要转换的 json 对象。
以上是关于Python-redis keys()返回字节对象列表,而不是字符串解决办法的主要内容,如果未能解决你的问题,请参考以下文章
Object.keys() 从集合中返回 MongoDB 对象上的意外键 [重复]