肉渣教程

Python 客户端

上一节 下一节

Python中Memcached客户端有很多,其中pylibmc是最佳选择,不仅使用方便,而且pylibmc底层模块是用C语言写的,性能极佳


安装pylibmc

一般来说,安装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

使用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最好的客户端,你值得拥有


Python 客户端

上一节 下一节