我正在使用docker compose开发一个简单的redis和flask项目。我的烧瓶使用lpush,rpop制作redis列表结构。它工作正常,直到我玩像brpop这样的命令,现在我的所有结果都是b'value'。我试图只使用第一个命令,但不知何故b'value'输出不断出现。有什么可能导致这个问题吗?
**redis.lpush('moviestore','likemov')
itle = redis.rpop('moviestore')**
答案 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')
总结:
注意差异:
str
,它是Python 2中的字节字符串和Python 3中的Unicode字符串。unicode
/ py3 str
; str
/ py3 bytes
。