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

Sal*_*ley 5 python design-patterns

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

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

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

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

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

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

那么,有什么建议吗?

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

Jas*_*ker 4

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

更新

我正在寻找对象的本地缓存。

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

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

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

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