简单的缓存基础结构。
bda.cache的Python项目详细描述
此软件包设计用于需要不同 各种缓存味道。这是抽象的,因为接口 ICacheProvider和ICacheManager。icacheprovider负责 具体的缓存实现,icachemanager是读/写接口。
约定是调整具体的icacheprovider实现
frombda.cacheimportICacheManagerfrombda.cacheimportMemcachedprovider=Memcached(['127.0.0.1:11211'])manager=ICacheManager(provider)
我们可以向管理器请求缓存中的数据
data=manager.get('somekey',force_reload=False)
如果force_reload设置为true,请尝试从缓存和 不返回。
我们还可以操作缓存的数据(一些限制我的结果 后端不提供它们)
manager.set('somekey',object())<> p>使用API和缓存一次就可以得到结果。
data=manager.getData(func,key,force_reload=False,args=[],kwargs={})
首先,在缓存提供程序中查找key的数据。如果找不到 如果force_reload设置为true,则调用给定的func。回报 此函数的值将存储在缓存提供程序中。args和 kwargs作为参数传递给给定的函数(如果需要调用)。
您可能会问为什么所有这些都是由于两个独立的接口而完成的…
某些用例可能需要不同的缓存提供程序,即针对不同的负载 大小。这样您就可以实现任何其他缓存提供程序的使用,因为 缓存管理器接口。
依赖关系
- zope.interface
- zope.component
- bda.cache.fscache.FSCache建议提供cpickle
- bda.cache.memcached.Memcached需要python-memcached
注释
如果您有兴趣参与,请放心,但请记住以下代码 计划在未来以类似疯牛病的牌照发放。 变化 ---
1.3.0(2019-02-05)
- python 3的可适配性[reinhardt]
- 代码样式(黑色/isort)[jensens]
1.2.0(2017-10-19)
- 更改为在可用时使用libmc或pylibmc
- 添加选项以要求使用bda.cache[pylibmc]或bda.cache[libmc]
1.1.2(2009-02-10)
- 删除旧代码
1.1.1(2009-02-10)
- zcml配置中的错误修复。
1.1(2009-02-09)
- 缓存管理器现在是适配器。
- 实现memcached服务器支持
- 否决默认的缓存管理器
- 修复fscache的测试
1.0
- 初始工作