使用Python操作memcache
Posted NAVYSUMMER
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Python操作memcache相关的知识,希望对你有一定的参考价值。
Python连接memcached的库有很多,处于简单以及高效的原则,最终选择了pymemcache,
- 优点
- 完全实现了memcached text协议
- 对于send/recv操作可以配置timeout
- 支持"noreply"特性,该可行可以先出的提高写的速度
- 使序列化/反序列化更简单
- 可以将网络异常,memecached错误当成是缓存丢失
- 安装pymemcache
pip install pymemcache - 使用pymemcache
- 基本操作
from pymemcache.client.base import Client client = Client((‘localhost‘, 11211)) client.set(‘some_key‘, ‘some_value‘) result = client.get(‘some_key‘)
- 使用memcache集群
使用一致性HASH算法支持集群
from pymemcache.client.hash import HashClient client = HashClient([(‘127.0.0.1‘, 11211),(‘127.0.0.1‘, 11212)]) client.set(‘some_key‘, ‘some value‘) result = client.get(‘some_key‘)
- 序列化操作
import json from pymemcache.client.base import Client def json_serializer(key, value):if type(value)== str:return value, 1 return json.dumps(value), 2 def json_deserializer(key, value, flags):if flags == 1:return value if flags == 2:return json.loads(value)raiseException("Unknown serialization format") client = Client((‘localhost‘, 11211), serializer=json_serializer, deserializer=json_deserializer) client.set(‘key‘,{‘a‘:‘b‘, ‘c‘:‘d‘}) result = client.get(‘key‘)
- 基本操作
- 最佳实践
- 在构造Client时,添加timeout 的配置,防止block操作
- 使用“noreply”来提高性能,默认情况下改属性在“set”, “add”, “replace”, “append”, “prepend”, and “delete”.操作时是开启的,“cas”, “incr” and “decr”.操作时关闭的
- 尽可能的使用get_many以及gets_many操作,来减少round trip的操作实践
- 使用“ignore_exc” 属性,将网络异常,memecached错误当成是缓存丢失
以上是关于使用Python操作memcache的主要内容,如果未能解决你的问题,请参考以下文章
为 memcached 和 Rails 组合片段和对象缓存的最佳方式