Python中Memcached客户端有很多,其中pylibmc是最佳选择,不仅使用方便,而且pylibmc底层模块是用C语言写的,性能极佳。
一般来说,安装pylibmc都会使用pip install pylibmc
进行安装;但是即使是使用pip进行安装,也经常会多多少少出现一些问题;以Ubuntu环境为例,一般来说,安装下面的这种方式安装,基本上不会出问题的。
$ sudo apt-get install python-dev $ sudo apt-get install libmemcached-dev $ sudo apt-get install zlib1g-dev $ sudo pip install pylibmc
如下所示插入模块,并连接到某个Memcached缓存服务上:
>>> import pylibmc >>> mc = pylibmc.Client( ["10.11.8.76:12007"], ... binary=True, ... behaviors={"tcp_nodelay": True, ... "ketama": True} )
Memcached是以键(key)值(value)配对的形式存储数据,如下所示,插入一个数据到缓存中去:
>>> mc.set( "key1", "value1" ) True
再使用get方法获取刚才储存在缓存中字符串“key1”所对应的数据:
>>> mc.get( "key" ) value1
若使用get方法获取一个不存在于缓存中的键所对应的值,则会得到None:
>>> a = mc.get( "key_of_nothing") >>> print a None
要想存入键值的时候,设置一个过期时间,则设置set方法的第三个形参即可,单位为秒;示例如下,该对键值数据只在缓存里储存10秒,10秒内可以get到,10秒后就只能get到None了:
>>> mc.set( "key2", "value2", 10 ) # 超过10s缓存自动删除该数据 True
通过pylibmc,可将多种数据类型的数据存入缓存,举例如下:
>>> import datetime >>> obj = datetime.datetime.now() datetime.datetime(2016, 3, 15, 22, 9, 28, 872429) >>> mc.set( "key3", obj ) True >>> mc.get( "key3" ) datetime.datetime(2016, 3, 15, 22, 9, 28, 872429)
使用delete方法可以删除指定的键值数据,将键(key)作为delete方法的形参即可:
>>> mc.delete( "key3" ) True
pylibmc还提供了incr方法直接对指定键的值进行累加修改,免得手动将该数据从缓存中取出,加1后再塞回缓存;同理,也提供了decr方法对缓存中数据进行递减操作;默认情况下,不管是累加还是递减,每次的操作都是1,即加1或减1;这种方法主要是方便了将计数器放在缓存的场景。
>>> mc.set("key", "1") # 第二个参数既可以是字符串类型,也可以直接用整型 True >>> mc.incr("key") 2L >>> mc.decr("key") 1L
Pylibmc是python关于Memcached最好的客户端,你值得拥有。