冯纪忠雄,Less Is More
分布式缓存,耗费的是内存。memcached稳定性非常高。memcached的分布式是靠手动设计键值中键的分布规则来形成分布式的。设计分布式法则的时候需要注意:1、当新添加一台memcached主机时,如何平缓地添加进去(对分布式缓存高度依赖的系统尤其要注意平缓更新)2、当实在无法平缓更新时,注意预热。
pylibmc官方网站:http://sendapatch.se/projects/pylibmc/
下文皆以ubuntu操作系统为例。
$ sudo apt-get install memcached
memcached -p 12001 -l 10.19.8.76 -m 100m
pylibmc是最佳的选择,性能最好。pylibmc是用C重新写的。总之只需要考虑用pylibmc就行了,其他的python client不需要考察了。
以前有些环境下安装pylibmc比较麻烦,但就目前我今天测试的这个ubuntu版本下如下操作即可。
sudo apt-get install python-dev sudo apt-get install libmemcached-dev sudo apt-get install zlib1g-dev sudo pip install pylibmc
>>> import pylibmc >>> mc = pylibmc.Client(["10.19.8.76"], binary=True, ... behaviors={"tcp_nodelay": True, ... "ketama": True}) >>> mc.set( "key", "value" ) True >>> mc.get( "key" ) value >>> mc.set( "fuck", "fuckfuckfuck", 10 ) #只放在缓存里10秒,10秒内可以get到,10秒后就get不到了 True >>> a = mc.get( "key_of_nothing") >>> print a None >>> import datetime >>> a = datetime.datetime.now() datetime.datetime(2016, 3, 15, 22, 9, 28, 873426) >>> mc.set( "key", a ) True >>> mc.get( "key" ) datetime.datetime(2016, 3, 15, 22, 9, 28, 873426) >>> mc.delete( "key" ) True >>> mc.set("key", "1") # str or int is fine True >>> mc.incr("key") 2L >>> mc.decr("key") 1L
这个事情不难,但是暂时不必要去考虑这些;先用云主机单机自建或直接用云计算平台提供的类似服务即可。如果对于分布式内存过于依赖,只有两种可能性,一是业务发展很好,有需求了;二是架构设计上有太大问题。