Python-redis keys() 返回字节对象列表而不是字符串

标签 python redis

我正在使用常规的 redis 包将我的 Python 代码连接到我的 Redis 服务器。

作为我代码的一部分,我检查我的 Redis 服务器 key 中是否存在字符串对象。

string = 'abcde'
if string in redis.keys():
  do something..

由于某些原因,redis.keys() 返回一个包含字节对象的列表,例如 [b'abcde'],而我的字符串当然是 str对象。

我已经尝试在我的 redis 生成器中设置 charsetencodingdecode_responses,但没有帮助。

我的目标是在前面插入数据作为字符串,而不是遍历键列表并在检查时将每个元素更改为 str()。

提前致谢

最佳答案

您可以配置 Redis 客户端,使用 StrictRedis 构造函数的 decode_responses 参数自动将响应从字节转换为字符串:

r = redis.StrictRedis('localhost', 6379, charset="utf-8", decode_responses=True)

确保您与客户端之间的 charset 选项保持一致。

注意事项

你最好使用 EXISTS命令和重组您的代码,例如:

string = 'abcde'
if redis.exists(string):
    do something..

KEYS 操作会返回 Redis 数据库中的每个键,这将导致生产中的性能严重下降。作为副作用,您可以避免处理二进制到字符串的转换。

关于Python-redis keys() 返回字节对象列表而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44026515/

相关文章:

python - 将 pdf 转换为图像时出现类型错误 : TypeError ("object of type ' NoneType' has no len()", )

python - 如何在我的项目中安装 django-scheduler。我收到一条错误消息,指出无法导入模块

redis zrange 与 zrangebyscore(-inf +inf)

cakephp - 在 CakePHP 3 中即时更改缓存配置

windows - Redis CLI 似乎永远卡在 Windows Bash 上

python - 从之前的数据结果中选择数据

python: GraphAPIError: 无效的 OAuth 访问 token

python - 数据集中的SettingWithCopyWarning

java - SpringBoot @Cachable Redis 部分键删除

node.js - 为什么我的 cookie 在页面刷新时被删除?快速 session 、redis 和 react