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

时间:2016-10-08 13:22:37

标签: python list redis docker-compose

我正在使用docker compose开发一个简单的redis和flask项目。我的烧瓶使用lpush,rpop制作redis列表结构。它工作正常,直到我玩像brpop这样的命令,现在我的所有结果都是b'value'。我试图只使用第一个命令,但不知何故b'value'输出不断出现。有什么可能导致这个问题吗?

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

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

1 个答案:

答案 0 :(得分:1)

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

所以,我认为在Python 3中有一个从Unicode到字节的自动转换(也可能在Python 2中)。

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

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

总结:

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

注意差异:

  • 默认情况下,'值'是str,它是Python 2中的字节字符串和Python 3中的Unicode字符串。
  • U'值'是一个Unicode字符串:py2 unicode / py3 str;
  • B'值'是字节字符串:py2 str / py3 bytes