雷迪斯工具

retools的Python项目详细描述


redis工具(重新配置)

retools是一个redis工具包。它的目的是提供 redis支持的python工具总是经过100%的单元测试,速度快,效率高, 利用redis的功能。

retools:中的当前工具

  • 缓存
  • 全局锁定

未来实施的前景:

  • 一个类似于芹菜的工人/工作处理系统,但是基于ruby的 恢复系统工作。
Build Status

缓存

一个高性能的缓存系统,可以作为 烧杯的缓存。与烧杯的缓存不同,它利用redis进行分布式 写锁定狗桩预防。它还收集命中/未命中缓存统计信息 同时记录哪些区域被哪些函数和参数使用。

示例:

from retools.cache import CacheRegion, cache_region, invalidate_function

CacheRegion.add_region('short_term', expires=3600)

@cache_region('short_term')
def slow_function(*search_terms):
    # Do a bunch of work
    return results

my_results = slow_function('bunny')

# Invalidate the cache for 'bunny'
invalidate_function(slow_function, [], 'bunny')

与烧杯的区别

与烧杯的缓存系统不同,这是严格为redis构建的。因此,它 添加烧杯不具备的几个功能:

  • 一种分布式写锁,一次只有一个写程序更新缓存 穿过一个集群。
  • 命中/未命中缓存统计信息,让您了解哪些缓存较少 有效利用(可能需要更长的到期时间,或者 不值得缓存)。
  • 非常小,紧凑的代码库,100%的单元测试覆盖率。

锁定

作为python上下文管理器实现的基于redis的锁,基于Chris Lamb’s example

示例:

from retools.lock import Lock

with Lock('a_key', expires=60, timeout=10):
    # do something that should only be done one at a time

许可证

retools根据麻省理工学院的许可证提供。

作者

retoolsben bangert提供。

更改日志

0.4.1(2014年2月19日)

错误修复
  • 用zadd(用于限制器)正确地支撑stricredis。修补程序 伯纳多·海尼曼。

0.4(2014年1月27日)

功能
  • 增加了限制器功能。拉动请求22,由Bernardo Heynemann编写。

0.3(2012年8月13日)

错误修复

  • 使用正确的redislock expires值调用redis.expire。修补程序 迈克·麦卡比。
  • 使用functools.wrapps为缓存区域保留文档字符串。修补程序 丹尼尔·霍尔特。

API更改

  • 已将get-job/get-jobs方法添加到queuemanager类以获取信息 在作业上或获取队列的作业列表。

0.2(2012年1月2日)

错误修复

  • 防止显示旧值的缓存关键修复程序 永远。感谢daniel holth跟踪问题。
  • 在设置缓存的 redis中的值。默认为1周。

功能
  • 缓存的统计信息现在是可选的,可以稍微禁用 减少用于存储/检索缓存数据的redis查询。
  • 添加了工人/作业队列系统的第一个修订版,并提供了事件支持。

内部构件
  • 经过大量重构的Connection不是类singleton,而是 默认情况下会创建并使用全局连接实例。
  • 将条件覆盖率增加到100%(通过instrumental)。

向后不兼容

  • 更改默认的全局redis连接已更改语义 在使用Connection.set_default时,应该设置全局连接的 redis属性直接:

    import redis
    from retools import global_connection
    
    global_connection.redis = redis.Redis(host='myhost')
    

不相容性
  • 从无效区域中删除了clear参数,如从 设置但不删除命中统计信息可能导致数据累积G英寸 除了不应运行的.keys()之外,无法轻松删除的redis 在生产环境中。
  • 已将deco_args从invalidate_callable(invalidate_function)中移除,作为其 实际上不需要,因为命名空间已经在 无效。

0.1(2011年8月7日)

功能
  • 以类似烧杯的方式缓存,带有命中/未命中统计信息,由 具有旧值的redis全局写锁,用于防止dogpile 效果
  • redis全局锁

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

推荐PyPI第三方库


热门话题
google chrome我在哪里可以下载Mac OSX Lion的Java 6?   java管道化hadoop映射减少作业   java避免在使用jsoup解析html时删除空格和换行符   java将arrayList中的元素相互比较   如何创建一个计算一组数字之和的程序(Java)?   java JavaFX 8 JVM在退出后保留   升华文本3升华文本3 Java交互控制台?   JAVAutil。扫描仪和维基百科   java Android在RecyclerView中更新TextClock的时间格式(12/24小时格式)   java集合,如果达到限制,则可以在添加新项之前删除旧项   hex Java将十六进制转换为带符号的8位代码   java如何使用SQL中其他列的数据?   java如何确保返回指定类型的列表?   列出如何在java中声明匿名arraylist?   在JavaSpringBoot中使用RESTXML文件   使用Java在ColdFusion中计算HMACSHA256摘要的加密