用redis实现基于区域的python/flask缓存
region-cache的Python项目详细描述
区域缓存
用Redis实现基于区域的Python/Flask缓存
- 自由软件:麻省理工学院许可证
- 文档:https://region-cache.readthedocs.io。
功能
使用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()函数。
学分
这个包是用Cookiecutter和audreyr/cookiecutter-pypackage项目模板创建的。
历史记录
0.1.0(2018-05-04)
- pypi上的第一个版本。