import pylibmc
mc_client = pylibmc.Client(["127.0.0.1"], binary=True,
behaviors={"tcp_nodelay": True, "ketama": True})
def cache_func(func):
print "---qqq---"
def haha(*args):
calculate_key = "some_key"
value = mc_client.get(calculate_key)
if value:
print "read cache"
return value
else:
print "write cache"
value = func(*args)
mc_client.set(calculate_key, value, 5)
return func(*args)
print "*****"
return haha
set:不管key存在与否,强制进行set操作;
add:必须在memcached中不存在相应key才能作用;
replace:要求memcached中必须存在相应key才能作用;
append:将数据追加到key对应value值的末尾。(不允许超过限制,用于管理list)
cas(check and set):另一个存储数据的操作,当你最后一次读取该数据后,没有其它人修改该数据时,才可以写成功。用于解决更新数据时的竞争。
get:获取一个key的或多个keys的值;
gets:带CAS的get命令,会返回带CAS标识(唯一的64位数字)的value。
delete:删除存在的项
incr/decr:自增或自减。只接受正整数。如果key不存在,incr/decr失败。
flush_all:清除memcached中所有项,主要采取将所有数据设置为过期的方式实现,可指定过期时间。
附pylibmc文档:http://sendapatch.se/projects/pylibmc/