用redis实现基于区域的python/flask缓存

region-cache的Python项目详细描述


区域缓存

https://img.shields.io/pypi/v/region_cache.svghttps://img.shields.io/travis/jheard-tw/region_cache.svgDocumentation StatusUpdates

用Redis实现基于区域的Python/Flask缓存

功能

使用redis的基于区域的烧瓶缓存。

此模块使用redis提供高级嵌套、基于区域的缓存。一个区域是由一个点分隔的 缓存键和值所在的命名空间。它在redis中实现为散列。父子关系 以集合的形式实现。超时使用expire命令。所有工作都在redis中持久化,并且有两个区域 两个不同进程甚至不同服务器上的同一名称将共享同一存储。

缓存的失效是“活动的”,而不是“惰性的”,因此缓存在失效后会立即被清除,以解决 一个进程知道缓存失效而另一个进程不知道的问题。高速缓存写入非常激烈 流水线和事务性的,因此如果两个进程同时写入同一个密钥,结果将不会是 不一致的。

缓存是作为烧瓶扩展写入的,因此您可以将init_应用程序与有效的烧瓶应用程序一起使用来初始化它。 只需在配置中设置cache_redis_url设置。

示例:

将区域用作上下文管理器会将上下文管理器中的所有内容视为单个事务:

with region('abc.xyz') as r:
    x in r  # test for presence
    r[x] = 100  # get or KeyError
    x = r[x]  # set
    del r[x]  # remove

绑定到闪烁信号,以声明方式清除缓存:

region('abc.xyz').invalidate_on(
    blinker.signal('a'),
    blinker.signal('b'),
    blinker.signal('c'),
    blinker.signal('d'),
)

嵌套区域。如果使父区域无效,则所有子区域也将无效。这是递归的,所以 子子区域也将正确无效:

region('abc').region('xyz')  # subregion
region('abc').invalidate()  # invalidate abc AND xyz

默认的序列化程序是“pickle”,但是您可以提供公开加载和转储的任何序列化程序,以及 区域的配置可以不同。孩子继承父母的环境。

最后,支持超时,默认情况下,每次写入缓存时,超时都会刷新自身 有关如何配置的详细信息,请参见region()函数。

学分

这个包是用Cookiecutteraudreyr/cookiecutter-pypackage项目模板创建的。

历史记录

0.1.0(2018-05-04)

  • pypi上的第一个版本。

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

推荐PyPI第三方库


热门话题
Java的Arraylist上的操作运行时是什么?   java按下按钮并显示通知   java如何修复“javax.net.ssl.SSLHandshakeException:20190416之后颁发并由不受信任的旧Symantec根CA锚定的TLS服务器证书”   用于新语言插件SonarQube的java解析器   java ANTLR4:参考书示例静态类定义   java如何计算用户点击按钮的次数以及如何保存按钮。安卓工作室   JSP if()语句中的java HTML不起作用   java仿真器崩溃“无效int”   雪花与Java应用程序的集成   从一家银行一行一行地拿到。带有自定义行尾的java txt文档   java从该方法的参数中获取值并显示   我的Eclipse插件尚未找到JAXBAPI的java实现   类如何从顶部文件夹加载java字节码(如果存在“.”)在子文件夹中?   ibm集成总线ibm MessageBroker Java API:Java。lang.NoClassDefFoundError:com。国际商用机器公司mq。MQException