面向python应用程序的轻量级可扩展缓存框架。它使用redis作为其存储后端。
RedCache的Python项目详细描述
redcache是一个轻量级的、可扩展的python缓存框架。 应用。它使用redis作为其存储后端。
快速启动
假设我们有一个从远程源加载数据的函数:
def load_something_from_somewhere(): # Load the data... return data
现在让我们在烧瓶视图中使用它:
@app.route('/something/') def get_something(): data = load_something_from_somewhere() # Do something with the data... return jsonify(data=data)
这里的问题是视图将一直等到获取数据。如果 视图经常被调用它将在服务器和 远程源。这不好看。
如果我们将加载的数据缓存一段时间,并且只在 缓存过期?那会很漂亮的。
有许多缓存解决方案,例如。 Beaker。redcache类似于 (灵感来自)烧杯,但只提供一个存储后端-redis。
那么,如何使用redis和redcache缓存从的某处加载某物?
在启动应用程序之前,请先设置redis连接:
from redcache import use_connection use_connection()
然后缓存函数:
from redcache import default_cache @default_cache.cache(ttl=5) def load_something_from_somewhere(): # Load the data... return data
下次load_时,某个地方的某个东西被称为redcache将尝试加载 它从redis返回的最后一个值。如果找不到,则函数将 执行并将其返回值存储在redis中5秒。
redcache.default_cache是 redcache.cache_manager.DefaultCacheManager方便 访问使用cpickle behind的缓存机制 场景。默认情况下,键将无限存储。使用ttl关键字 参数来定义不同的TTL。
扩展和高级使用
redcache可以很容易地扩展以利用redis的数据类型和特性。
通过重写redcache.cache_manager.CacheManager.after_load和 redcache.cache_manager.CacheManager.before_save您可以执行 对数据的附加操作。这样您就可以存储json字符串 腌制过的东西。
通过重写 redcache.cache_manager.CacheManager.load和 redcache.cache_manager.CacheManager.save您可以更改数据的方式 加载并保存。这样就可以存储单个对象的列表 并根据分页选项检索它们。
请参考示例以了解如何将redcache与sqlalchemy集成,并查看 如何使用json而不是cpickle。
源代码
源代码可从 project repository在github上。