一个通用的内存缓存模块
项目描述
这个简单的通用缓存实现版权(c)Pilot Systems,2006-2008,并根据GNU GPL v2条款提供。
版本信息
版本1.0.2,需要Python 2.4或更高版本。
功能
快速内存缓存任何对象
类似字典的使用方式
可以限制缓存大小为对象数量
可以在给定时间无更新后自动过期对象
线程安全
基本用法
创建缓存
>>> from GenericCache.GenericCache import GenericCache >>> c = GenericCache()
存储值
>>> c["key"] = "value" or >>> c.insert("key", "value")
检索值
>>> c["key"] or >>> c.fetch("key")
如果在缓存中找不到值,则返回None。Fetch可以接受一个可选值,在找不到值时失败(KeyError)。
警告
在当前实现中,键被转换为字符串
对象的超时对于超时是懒加载的,这意味着对象将保留在缓存中,直到有人尝试访问它们;len()仍然可以看到它们;有一个collect()方法来收集所有超时对象,但它可能很慢。
装饰器使用
Python 2.4+中的装饰器可以用来装饰任何函数或方法。以下是一个示例
>>> from GenericCache.GenericCache import GenericCache >>> from GenericCache.decorators import cached >>> cache = GenericCache() >>> @cached(cache) ... def add(x, y): ... print x, "+", y ... return x + y ... >>> add(2,3) 2 + 3 5 >>> add(2,3) 5 >>> add(2,4) 2 + 4 6 >>> add(2,4) 6 >>> add(2,3) 5 >>>
装饰器接受一个可选参数,一个marshaller,它过滤函数的参数并将其转换为缓存键(某些参数可能被丢弃,例如)。