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第三方库


热门话题
box api如何使用box Java SDK从图像文件中获取特定大小的缩略图?   java无法从JNA使用python cffi调用DLL中定义的函数   java在linux中通过Jar文件发送电子邮件   使用lucene+hibernate的java查询时间连接   java在带有循环的arrayList中设置值   java为什么ImageReader返回错误的BuffereImage?   c#TCP数据有时接收顺序错误且不完整   java如果发生IOException,该InputStream是否会正确关闭?   tcp在Java中,如果不使用IP,如何获取MAC地址?   java从批处理方法调用中收集结果   java Android Studio RecyclerView在滚动图像时严重滞后   java如何使用OOP进行retrofti调用?   记录FileAppender在Java中如何工作   与S3连接期间收到java异常   java找不到JNDI资源Tomcat 7