简单的缓存基础结构。

bda.cache的Python项目详细描述


此软件包设计用于需要不同 各种缓存味道。这是抽象的,因为接口 ICacheProviderICacheManager。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。回报 此函数的值将存储在缓存提供程序中。argskwargs作为参数传递给给定的函数(如果需要调用)。

您可能会问为什么所有这些都是由于两个独立的接口而完成的…

某些用例可能需要不同的缓存提供程序,即针对不同的负载 大小。这样您就可以实现任何其他缓存提供程序的使用,因为 缓存管理器接口。

依赖关系

  • 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

  • 初始工作

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Selenium Web驱动程序。负载策略不稳定   JAVAsql。SQLException:没有合适的驱动程序无法创建“oracle”类的JDBC驱动程序。jdbc。驾驶员用于连接URL的OracleDriver   java谷歌地图“优化路径点”如何解决旅行推销员的问题?   java这段代码可能会造成潜在的内存泄漏吗?   java更改JCombobox的高度   java如何清除jtable中的数据   JavaHadoop:错误安全性。UserGroupInformation:MapReduce程序中的PriviledgedActionException   java如何将sonarlint添加到gradle任务中?   性能为什么Java排序优于原语计数排序   java Spring属性PlaceHolderConfigure从数据库加载   java从泛型获取类不起作用   java Spring@Transactional传播属性   java试图拥有主菜单和子菜单类   XSL的java后处理步骤   java第一个字母和最后一个字母、第二个字母和倒数第二个字母之间的差值之和,依此类推,直到单词的中心   switch语句在Java中的下一个出发点   java 安卓如何在OnBackpress()时设置viewpager的特定项目位置?