如何在Flask中解码Redis响应?

时间:2015-10-26 05:05:54

标签: python flask redis

我想在我的烧瓶应用程序中收到redis的解码响应。

例如,当我使用redis.hget时,我会收到

{
    b'a': b'1',
    b'b': b'2',
    b'c': b'3',
}

这对我的用例并不是很理想,因为它要求我使用像my_hash[b'a']这样的has列表。

我宁愿收到这样的回复:

{
    'a': '1',
    'b': '2',
    'c': '3',
}

是否有一种简单的方法让python-redis解码来自数据存储的所有响应?

2 个答案:

答案 0 :(得分:3)

只需创建一个小型自定义提供程序,在使用decode_responses函数配置数据存储时设置from_url参数。

class DecodedRedis(StrictRedis):
    @classmethod
    def from_url(cls, url, db=None, **kwargs):
        kwargs['decode_responses'] = True
        return StrictRedis.from_url(url, db, **kwargs)


redis = FlaskRedis.from_custom_provider(DecodedRedis, app)

答案 1 :(得分:1)

您可以使用decode_responses=True来获取str而不是字节

这是我的代码使用工厂模式

from flask_redis import FlaskRedis
redis_store = FlaskRedis(decode_responses=True)
def create_app():
    redis_store.init_app(app)

您可能会喜欢

>>> from app import redis_store
>>> redis_store.keys()
['test']
>>> redis_store.hgetall("test")
{'a': '1'}