要从memcache获取密钥(使用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以与放入它相同的形式返回对象?
答案 0 :(得分:27)
不同之处在于,虽然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)
答案 1 :(得分:9)
或者您甚至可以继承Redis :
import pickle
from redis import StrictRedis
class PickledRedis(StrictRedis):
def get(self, name):
pickled_value = super(PickledRedis, self).get(name)
if pickled_value is None:
return None
return pickle.loads(pickled_value)
def set(self, name, value, ex=None, px=None, nx=False, xx=False):
return super(PickledRedis, self).set(name, pickle.dumps(value), ex, px, nx, xx)