如何在 Flask 中解码 Redis 响应?

and*_*ase 4 python redis flask

我想在我的 Flask 应用程序中接收来自 redis 的解码响应。

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

{
    b'a': b'1',
    b'b': b'2',
    b'c': b'3',
}
Run Code Online (Sandbox Code Playgroud)

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

我宁愿收到这样的回复:

{
    'a': '1',
    'b': '2',
    'c': '3',
}
Run Code Online (Sandbox Code Playgroud)

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

and*_*ase 6

只需创建一个小型自定义提供程序,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)
Run Code Online (Sandbox Code Playgroud)