一尘不染

从redis获取对象而没有评估?

redis

要从内存缓存中获取密钥(使用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以与放入对象相同的形式返回对象?


阅读 237

收藏
2020-06-20

共1个答案

一尘不染

区别在于,尽管memcached和Redis仅支持字符串值,pylibmc但使用序列化您发送的值pickleredis- 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)
2020-06-20