我正在使用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
/py3str
; - b'value'是一个字节串:py2
str
/py3bytes
。