简单的缓存基础结构。

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第三方库


热门话题
在重构时,Eclipse不会自动签出所有受影响的Java文件   Java<>Scala互操作:透明列表和地图转换   swing JAVA 6x6网格着色游戏   数组中每个中位数的总和   java筛选ArrayAdapter Listview未刷新(Android)   java如何在Jhipster网关中代理请求?   java反向地理编码以获得街道名称   java如何在jsp页面中运行servlet,这是一种良好的编程实践吗?   JavaSpring初始化顺序   如何使用Java Jackson重命名JSON的根键?   java返回响应并执行某个方法(Tomcat)   java哈希映射到树映射   正则表达式如何将java字符串拆分为(?)?   服务器/客户端java程序makefile上的多个依赖项   记录使用内置Guice注入来注释静态java的正确习惯用法。util。记录器实例?   从一个实例到另一个线程的非零/非空属性的另一个副本,嵌套方法/Java   java仅使用wait()和notify()在两个线程之间交替运行   将Netbeans上现有的java项目移植到另一台机器上,然后运行它,会出现一个不受支持的ClassVersionError异常   如何使用Javasocket从远程服务器读取响应