Python3:与redis交互,保存的是字符串,取出来是bytes类型
·
原因:在python3中redis连接包读取数据默认返回byte类型。存进去的是字符串类型的数据,取出来却是字节类型的。
Python2取出来的就是字符串类型的。
import platform
import redis
if "inux" in platform.system():
print("检测到是服务器环境,启动redis内网链接")
IP = "xxx.xx.x.xx"
PORT = 6379
else:
IP = "xxx.xxx.xxx.xx"
PORT = 6379
# 存进去的是字符串类型的数据,取出来却是字节类型的
redisPool1 = redis.ConnectionPool(host=IP, port=PORT, db=1, password="xxxxxxx")
if __name__ == '__main__':
client = redis.Redis(connection_pool=redisPool1 )
client.set("ACCESS_TOKEN", "ABC123456", 60 * 60)
token = client.get("ACCESS_TOKEN")
print(token) # b'ABC123456'
print(type(token)) # <class 'bytes'>
解决方法:连接redis的时候,加上decode_responses=True或者每次取出来都decode一下(太麻烦,不推荐)
import platform
import redis
if "inux" in platform.system():
print("检测到是服务器环境,启动redis内网链接")
IP = "xxx.xx.x.xx"
PORT = 6379
else:
IP = "xxx.xxx.xxx.xx"
PORT = 6379
# 存进去的是字符串类型的数据,取出来也是字符型
redisPool1 = redis.ConnectionPool(host=IP, port=PORT, db=1, password="xxxxxxx", decode_responses=True)
if __name__ == '__main__':
client = redis.Redis(connection_pool=redisPool1 )
client.set("ACCESS_TOKEN", "ABC123456", 60 * 60)
token = client.get("ACCESS_TOKEN")
print(token) # ABC123456
print(type(token)) # <class 'str'>
更多推荐

所有评论(0)