python应用程序的全功能缓存。

rupee的Python项目详细描述


rupe是一个简单但功能齐全的python 3缓存库。

发动机

rupe支持使用进程内存、redis和memcached进行缓存。

对于redis支持:

pip install redis

对于memcached支持,可以使用pylibmc

pip install pylibmc

python-memcache

pip install python-memcache

缓存访问

您可以创建这样的缓存实例:

memory = rupee.engine.Memory()
memcached = rupee.engine.Memcached(['localhost:11211'])
redis = rupee.engine.Redis('localhost:6379')

所有实例都符合相同的api,该api提供get/set/delete 您期望的操作:

cache = rupee.engine.Memcached(['localhost:11211'])
cache.set('foo', 'bar', ttl=3600)
cache.set_multi({'baz': 1, 'qux': 2})
cache.get('baz') == 1
cache.get_multi(['foo', 'qux']) == {'foo': 'bar', 'qux': 2}
cache.delete('qux')
cache.delete_all(['foo', 'baz'])
cache.delete_all_data()

缓存的装饰器

您可以将函数修饰为缓存其结果:

cache = rupee.engine.Redis('localhost:6379')

@rupee.cached(cache, ttl=3600)
def foo(bar, baz):
    return _some_expensive_thing(bar, baz)

清除函数调用的缓存项:

foo.dirty(1, 2)

对于执行批量操作的函数,可以使用多缓存 装饰工:

@rupee.multi_cached(cache):
def get(items):
    return {item: _some_expensive_thing(item) for item in items}

multi_cached修饰的函数必须将单个列表作为 参数,并返回对该列表中的项键入的字典。那么, 每个项的结果将单独缓存,并且只缓存所需的 项将传递给函数。举例说明:

get([1, 2, 3]) # calls _some_expensive_thing on 1, 2, and 3
get([1, 2, 3]) # _some_expensive_thing is never called
get([2, 3, 4]) # calls _some_expensive_thing only on 4

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

推荐PyPI第三方库


热门话题
使用php调用java web服务时无法获取输出   java Netbeans:安装IMlet时出错。。。。仿真器错误   初始化期间Eclipse Juno SR 2中的java堆栈溢出   java在3d中寻找两个任意立方体的交集   代码中显示java“org.openqa.selenium.WebDriverException”错误   java使用AtomicInteger作为可变整数的替代品是一种好的做法吗?   当以编程方式设置背景颜色时,java版面在更新后会自动复制   java将字符串拆分为一个带有数字数据的字符串和另一个带有非数字数据的字符串   带有SSL协议的java AsyncHttpClient   C++服务器HTTN到java NtoHS客户端转换   java内存分配是基于引用类还是实例类?   java使用ProjectLombok安全吗?   grails“java版本”在命令提示符下不工作   java无法使用axis2实例化类型ADBDataSource   在Play Framework 2中进行多文件上传的java示例   java如何将二进制补码字符串转换为负十进制数?   windows 7在Java中获取不正确的操作系统名称   java如何禁用p:commandButton的enter键?   java如何从main方法加载servlet   java如何从imageView获取二进制位图