python - 在没有评估的情况下从redis获取对象?

标签 python redis

要从内存缓存中获取 key (使用 pylibmc),您可以这样做:

client.set(key, {'object': 'dictionary'}, time=expire)
client.get(key)

在redis中也是这样:

redis.setex(key, expire, {'object': 'dictionary'})
eval(redis.get(key) or 'None')

最后一行我觉得不对。 redis 似乎只返回字符串。是否有 get redis 以与放入时相同的形式返回对象?

最佳答案

不同之处在于,虽然 memcached 和 redis 都只支持字符串值,pylibmc 使用 pickle 序列化您发送给它的值。 , redis-py 只是将它们转换为字符串。

如果你想对 redis 做同样的事情,你可以有自己的函数来为你做酸洗。

def set_value(redis, key, value):
    redis.set(key, pickle.dumps(value))

def get_value(redis, key):
    pickled_value = redis.get(key)
    if pickled_value is None:
        return None
    return pickle.loads(pickled_value)

关于python - 在没有评估的情况下从redis获取对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12870772/

相关文章:

python - 如何使用Python CDK代码部署Java Lambda jar?

python - 仅解析小时 :Minute:Second using pandas

caching - Azure Redis 缓存延迟

python - 值错误 : Unknown type <class 'redis.client.StrictPipeline' >

redis - 无法使聚合正常工作。

python - 如何从 numpy 多维数组中获取 k 个最大值的索引

python - numpy数组将多列除以一列

ruby - Redis存储地理信息,

redis - 启动 celery worker 服务器时无法诊断 MISCONF redis 问题

javascript - 如何在 Node.js 中终止 Python-Shell 模块进程?