用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将<String,Object>映射到JSONString   java如何读取多个文件。if语句中的equals语句   java启动Glassfish时出现间歇性异常   java如何根据用户偏好进行动态API调用?   HibernateJavaSpring,处理域对象   java Thumbnailator库将图像转换为cmyk   Java初学者租赁计划   java存储和检索特殊字符mysql   在Java 10上评测远程JProfiler   授权中的java角色概念   java使用Dropwizard和JDBI查询具有多个模式的数据库?   java冲突检测,在libgdx中   java如何使用SAX解析器解析xml文件中的嵌套标记   使用asm重建方法时的java错误指令   java如何使用GWT增加ListBox的文本大小   java:我的编码应该遵循什么样的设计结构   java“is prime”算法运行时   java如何保护我的进程被终止?