是否有标准的第三方Python缓存类?

时间:2009-03-31 14:33:39

标签: python design-patterns

我正在研究一个需要从网络数据库加载数据的客户端类。有人建议,向客户端添加标准缓存服务可以提高其性能。

我非常希望不必建立自己的缓存类 - 众所周知,这些提供了常见的失败点。使用其他人开发的类而不是花费大量时间来调试自制的缓存系统会好得多。

Java开发人员有这个: http://ehcache.sourceforge.net/

这是一个通用的高性能缓存类,可以支持各种存储。它有基于时间的到期和其他垃圾收集方法的选项。它看起来非常好。不幸的是,我找不到任何对Python有用的东西。

所以,有人可以建议一个可供我使用的缓存类。我的愿望清单是:

  • 能够限制缓存中的对象数量。
  • 能够限制缓存中对象的最长期限。
  • LRU对象expirey
  • 能够选择多种形式的存储(例如内存,磁盘)
  • 经过良好调试,维护良好,至少有一个众所周知的应用程序正在使用。
  • 表现良好。

那么,有什么建议吗?

更新:我正在寻找对象的LOCAL缓存。我连接的服务器已经被高度缓存。 Memcached不合适,因为它需要Windows客户端和服务器之间的额外网络流量。

1 个答案:

答案 0 :(得分:4)

我建议您使用memcached并使用cmemcache来访问它。您不一定要限制缓存中的对象数,但可以设置到期时间并限制它使用的内存量。 memcached被很多大牌使用。事实上,我称之为行业标准。

<强>更新

  

我正在寻找对象的LOCAL缓存。

您可以在本地运行memcached并通过localhost访问它。我已经这样做了几次。

除此之外,我能想到的唯一解决方案是django's caching system。它提供了几个后端和一些其他配置选项。但如果你不使用django,那可能会有点重量级。

更新2:我认为作为最后的手段,您还可以使用jython并访问Java缓存系统。如果您已经让客户使用CPython,这可能有点难以做到。

更新3:对你有用可能有点晚了,但是我以前的雇主使用ZODB来做这件事。它是一个实际的数据库,但其读取性能足够快,可以用于缓存。