Python redis rpop is resultng b'value' list structure



我正在使用docker撰写一个简单的redis和flask项目。我的flask使用lpush, rpop来制作redis列表结构。它工作得很好,直到我玩像brpop这样的命令,现在使我所有的结果b'值'。我试着只使用第一个命令,但不知何故,b'value'输出不断出现。你知道是什么引起的吗?

**redis.lpush('moviestore','likemov')
itle = redis.rpop('moviestore')**

似乎redis字符串是Python字节字符串(参见关于数据类型的文档)。

所以,我认为在Python 3中有一个从Unicode到Bytes的自动转换(也许在Python 2中也是如此)。

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

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

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

注意区别:

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

最新更新