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