雷迪斯工具
retools的Python项目详细描述
redis工具(重新配置)
retools是一个redis工具包。它的目的是提供 redis支持的python工具总是经过100%的单元测试,速度快,效率高, 利用redis的功能。
retools:中的当前工具
- 缓存
- 全局锁定
未来实施的前景:
- 一个类似于芹菜的工人/工作处理系统,但是基于ruby的 恢复系统工作。
缓存
一个高性能的缓存系统,可以作为 烧杯的缓存。与烧杯的缓存不同,它利用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根据麻省理工学院的许可证提供。
更改日志
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')