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方法详解

Object.keys() 从集合中返回 MongoDB 对象上的意外键 [重复]

Object.keys

Object.keys 返回由一个给定对象的自身可枚举属性组成的数组

Object.keys

Object.keys()方法