首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >redis-py和hgetall行为

redis-py和hgetall行为
EN

Stack Overflow用户
提问于 2014-04-24 07:17:37
回答 3查看 15.5K关注 0票数 19

我尝试使用flask microframework,并希望在redis中缓存一些统计数据。假设我有这样一句话:

代码语言:javascript
复制
mydict = {}
mydict["test"] = "test11"

我把它保存到了redis

代码语言:javascript
复制
redis.hmset("test:key", mydict)

但是,在恢复之后

代码语言:javascript
复制
stored = redis.hgetall("test:key")
print(str(stored))

我看到了奇怪的{b'test': b'test11'},所以stored.get("test")什么也没给我

{'test': 'test11'}mydict字符串方法结果看起来很好。那么,为什么将这个二进制标记添加到恢复的数据中呢?我还检查了redis-cli,没有看到显式的b标记。hgetall有什么问题吗?

EN

回答 3

Stack Overflow用户

发布于 2014-09-21 18:05:19

这是预期的行为。默认情况下,来自Redis的字符串不会被解码。您有几个选项:

  • 使用decode_responses参数对客户端实例的数据进行解码,例如StrictRedis(decode_responses=True)。这将根据charset参数(默认为utf-8)解码来自Redis的所有字符串。只有这样做,您才能确保来自Redis的每个响应都包含您希望解码为utf-8的字符串数据。如果您使用相同的客户端实例来获取二进制数据,例如一个pickled对象,则不应该使用此选项。在这种情况下,我建议对二进制数据使用单独的客户端实例。

来源:https://github.com/andymccurdy/redis-py/issues/463#issuecomment-41229918

票数 27
EN

Stack Overflow用户

发布于 2017-02-22 13:27:24

代码语言:javascript
复制
POOL = redis.ConnectionPool(host='localhost', **decode_responses=True**, port=6379, db=0)
datastore = redis.StrictRedis(connection_pool=POOL)

如果使用ConnectionPool,则应将decode_responses=True移至ConnectionPool的构造函数。

票数 9
EN

Stack Overflow用户

发布于 2019-11-14 19:40:27

下面是一个简单的例程,用于对HGETALL返回的redis dict执行字节解码

代码语言:javascript
复制
def decode_redis(src):
    if isinstance(src, list):
        rv = list()
        for key in src:
            rv.append(decode_redis(key))
        return rv
    elif isinstance(src, dict):
        rv = dict()
        for key in src:
            rv[key.decode()] = decode_redis(src[key])
        return rv
    elif isinstance(src, bytes):
        return src.decode()
    else:
        raise Exception("type not handled: " +type(src))

..。要使用它,只需传递给redis字典...

代码语言:javascript
复制
obj = decode_redis(redis_connection.hgetall(key))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23256932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档