python - 是否有标准的第 3 方 Python 缓存类?

标签 python design-patterns

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

我非常希望不必构建自己的缓存类 - 众所周知,这些会提供常见的故障点。使用别人开发的类比我自己花费大量时间调试自制缓存系统要好得多。

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

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

那么,有人可以推荐一个可供我使用的缓存类吗?我的愿望 list 是:

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

那么,有什么建议吗?

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

最佳答案

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

更新:

I'm looking for LOCAL caching of objects.

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

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

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

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

关于python - 是否有标准的第 3 方 Python 缓存类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/701264/

相关文章:

c++ - 设计模式 - Adapter 和 Bridge 之间的区别?

python - 根据条件在 Pandas 系列中分配值?

python - 导入数据库需要很多时间

.net - 我应该如何从 ViewModel 触发警报?

java - 无论如何,将空值排序到底部的好通用方法?

sql - 同步客户端-服务器数据库

java - 有没有一种方法可以遵守单一职责原则,而无需在此代码中调用多个数据库调用?

python - 如何从 python 中的 tzfile 中查找时区名称

python - 如何在 Python 类中定义 'exec'

python - 导入matplotlib导致 "int() argument must be a string"错误