Python redis rpop 是 resultng b'value' 列表结构

标签 python list redis docker-compose

我正在使用 docker compose 开发一个简单的 redis 和 flask 项目。我的 flask 使用 lpush、rpop 操作 redis 列表结构。在我使用像 brpop 这样的命令之前,它工作得很好,现在我的所有结果都变成了 b'value'。我尝试只使用第一个命令,但不知何故 b'value' 输出不断出现。知道是什么原因造成的吗?

**redis.lpush('moviestore','likemov')

itle = redis.rpop('moviestore')**

最佳答案

redis 字符串似乎是 Python 字节字符串(参见有关 Data Types 的文档)。

因此,我认为在 Python 3 中(可能在 Python 2 中也存在)从 Unicode 到字节的自动转换。

要使用 Unicode 字符串,您可以对字符串进行编码/解码(例如使用 UTF8 编码):

redis.lpush('moviestore', u'likemov'.encode('utf8'))
...
itle = redis.rpop('moviestore').decode('utf8')

总结:

  • 在 Redis 中存储 Unicode 字符串:您对其进行编码,
  • 从 Redis 检索 Unicode 字符串:您对其进行解码。

注意区别:

  • 默认情况下,'value' 是一个 str,它在 Python 2 中是字节字符串,在 Python 3 中是 Unicode 字符串。
  • u'value'是一个Unicode字符串:py2 unicode/py3 str;
  • b'value' 是字节字符串:py2 str/py3 bytes

关于Python redis rpop 是 resultng b'value' 列表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39932873/

相关文章:

c++ - 错误 : 'object' was not declared in this scope (C++)

python - 一行中从列表末尾算起的单词数

amazon-web-services - 将 elasticache 数据导出到本地主机

algorithm - Laravel5.2 中的缓存

python - 使用Python将JSON转换为CSV

python - Networkx:寻找到图中多个节点之一的最短路径

list - Haskell - 使用 foldr 函数对列表元素进行分组

python-3.x - mock @patch 不修补 redis 类

python - 在 postgresql 上从 sqlalchemy 执行原始 sql 查询

python - 递归python文件复制程序的问题