Python / Redis – O que é o caracter ‘b’ no retorno do redis (About char b prefix in Python client connect to redis)

redis_python

b’Hello Python’

Esse tipo de retorno indica que o valor é um byte de string – o redis irá codificar automaticamente a string unicode para você na gravação, mas é seu trabalho decodificá-lo ao pega-lo.

>>> redisClient = redis.Redis(host=’0.0.0.0′,port=6379)
>>> redisClient.set(‘test_redis’, ‘Hello Python’)
>>> redisClient.get(‘test_redis’)
b’Hello Python’

Podemos decodificar seu valor de duas maneiras:

A primeira seria logo ao abrir a conexão definir a propriedade decode_responses

>>> redisClient = redis.Redis(host=’0.0.0.0′,port=6379, decode_responses=True)
>>> redisClient.get(‘test_redis’)
‘Hello Python’

A outra maneira é chamar o método .decode no retorno do .get()

>>> redisClient = redis.Redis(host=’0.0.0.0′,port=6379)
>>> redisClient.get(‘test_redis’).decode()
‘Hello Python’

Uma observação importante:
Podemos configurar o charset na conexão, no decode ou até mesmo no encode:

>>> redisClient = redis.Redis(host=’0.0.0.0′,port=6379, charset=’utf-8′, decode_responses=True)

>>> redisClient.set(‘test_redis’, ‘Hello Python’.encode(‘utf-8′))

>>> redisClient.get(‘test_redis’).decode(‘utf-8)