与python对象属性接口的缓存接口。
cacheobj的Python项目详细描述
缓存对象是通用对象属性接口。
注意:此库正在重新启动。如果您介意不断重写,请不要从低于0.6.x的版本进行更新。
示例
有一些预定义的公共类型。
内存中包括memcache和redis后端。以及它的通用接口。
>>> from cacheobj.redis import LocalRedisObject >>> class UserCache(LocalRedisObject): ... _properties = ['username', 'name'] ... >>> user = UserCache(id=10) >>> print user.username None >>> user.username = 'username' >>> user.name = 'Real Name' >>> print user.username username >>> user10 = UserCache(id=10) >>> print user10.username username
缓存以类名和给定的ID存储。
>>> print user.get('username', use_cache=True) username
如果您不想再次访问后端,可以使用本地内存缓存的“使用缓存”选项。
对于非本地缓存后端,请尝试使用简易生成器。
>>> from cacheobj.redis import get_redis_object >>> import redis >>> MyRedisObject = get_redis_object(redis.ConnectionPool()) # any connection pool >>> class MyUserCache(MyRedisObject): ... pass ...
自定义后端
上面的例子是基本配置的快捷方式
>>> from cacheobj import SimpleCacheObject >>> from cacheobj.backend.memcache import MemcacheBackend >>> def get_backend(): ... return MemcacheBackend(['127.0.0.1:11211']) ... >>> class UserCache(SimpleCacheObject): ... _backend_generator = staticmethod(get_backend) ... _properties = ['username', 'name'] ...
此对象用作上usercache对象。 你可以把这个放在自定义后端
请参阅源代码以编写后端。只是几行而已
综合示例
可以为一个对象组合多个后端。
>>> from cacheobj import CacheObject >>> from cacheobj.backend.memory import MemoryBackend >>> from cacheobj.backend.memcache import MemcacheBackend >>> from cacheobj.backend.redis import RedisBackend >>> >>> memory = MemoryBackend() >>> memcache = MemcacheBackend() >>> redis = RedisBackend() >>> >>> class CompositeCache(CacheObject): ... _backends = { ... memory: ['mem1', 'mem2'], ... memcache: ['mc1', 'mc2'], ... redis: ['redis1', 'redis2'], ... } ... >>> c = CompositeCache() >>> c.mem1 # with backend memory >>> c.mc1 # with backend memcache >>> c.redis1 # with backend redis