redis py和hgetall-为什么键值有b“”?

时间:2019-07-12 10:05:26

标签: python python-3.x redis

以下是字典从redis返回的结果。为什么是b?我该如何摆脱呢?

data = r_client.hgetall(key)
{b'test1:r': b'2', b'test2:f': b'2'}

print('test1:r' in data)
False

print(b'test1:r' in data)
True

当我从redis获取数据时,如何摆脱那个可怕的b?

我的意思是我这样做是为了得到我想要的东西:

new_data = {}
for key,value in data.items():
    new_data[key.decode()] = value.decode()

2 个答案:

答案 0 :(得分:1)

您可以添加参数来摆脱这种情况。

client = redis.Redis('localhost', charset="utf-8", decode_responses=True)

答案 1 :(得分:0)

您需要解码字符串的字节:

b'test1:r'.decode('utf-8')

解码所有密钥:

data = {b'test1:r': b'2', b'test2:f': b'2'}
data= {key.decode('utf-8'):value for key,value in data.items()}
print('test1:r' in data) # True
print(b'test1:r' in data) # False