当两个不同的窗口访问相同的密钥时,为什么Redis会返回2种不同的类型?

时间:2017-06-04 14:20:21

标签: python redis

我正在使用Python和redis-py Python客户端与Redis Labs提供的Redis(e)Cloud相同的Redis进行通信。在终端中,检索密钥并将值作为字符串类型返回。

enter image description here

当我在IDE中运行代码文件时,相同的代码返回一个bytes对象。

enter image description here

我不明白为什么他们会回归不同的类型。我阻止了Redis主机和端口的详细信息,但他们正在访问相同的Redis,并且我在拍摄这两个屏幕截图之间没有任何改变。

1 个答案:

答案 0 :(得分:1)

这不是redis问题,而是Py2和Py3之间的区别。

  

Python 3.0使用文本和(二进制)数据的概念,而不是Unicode字符串和8位字符串。所有文本都是Unicode;但编码的Unicode表示为二进制数据。用于保存文本的类型是str,用于保存数据的类型是字节。与2.x情况的最大区别在于,任何在Python 3.0中混合文本和数据的尝试都会引发TypeError,而如果您要在Python 2.x中混合使用Unicode和8位字符串,那么如果8位字符串碰巧只包含7位(ASCII)字节,但如果包含非ASCII值,则会得到UnicodeDecodeError。这种特定价值的行为多年来引起了许多悲伤的表情。