面向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_cacheredcache.cache_manager.DefaultCacheManager方便 访问使用cpickle behind的缓存机制 场景。默认情况下,键将无限存储。使用ttl关键字 参数来定义不同的TTL。

扩展和高级使用

redcache可以很容易地扩展以利用redis的数据类型和特性。

通过重写redcache.cache_manager.CacheManager.after_loadredcache.cache_manager.CacheManager.before_save您可以执行 对数据的附加操作。这样您就可以存储json字符串 腌制过的东西。

通过重写 redcache.cache_manager.CacheManager.loadredcache.cache_manager.CacheManager.save您可以更改数据的方式 加载并保存。这样就可以存储单个对象的列表 并根据分页选项检索它们。

请参考示例以了解如何将redcache与sqlalchemy集成,并查看 如何使用json而不是cpickle。

作者、学分和许可证

redcache是由BTHLabs开发的。

redcache是根据bsd许可证授权的。 见LICENSE 更多细节。

此项目使用来自 RQ

此项目使用上下文本地对象代码 Werkzeug

源代码

源代码可从 project repository在github上。

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

推荐PyPI第三方库


热门话题
在Java中运行时在两个枚举类之间切换   java如何让PicoContainer启动/停止/处置工厂注入的组件?   带有Recyclerview onClick的java多活动   java如何从TestNG tests和Selenium接口调用默认方法?   java无法在Eclipse3.5.2中折叠注释   RR和SJF CPU调度算法的Java代码   java从属性文件配置记录器   java Notify传输在字符更改后超过20个字节完成   java阵列究竟是如何工作的   java跨类/包维护全局但可变的变量   java向setMessageListener注册侦听器服务   java按钮单击不在片段中工作   java GSSExException:使用spnego在GSSAPI上未指定故障(机制级别:不支持/启用带有HMAC SHA196的加密类型AES256CTS模式)   用java绘制虚线的图形   java从networkdrive启动windows捆绑包使用不包括JRE?   多线程java线程体系结构与应用程序设计