【问题标题】:Is there a standard 3rd party Python caching class?是否有标准的第 3 方 Python 缓存类?
【发布时间】:2009-03-31 14:33:38
【问题描述】:

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

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

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

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

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

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

那么,有什么建议吗?

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

【问题讨论】:

    标签: python design-patterns


    【解决方案1】:

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

    更新

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

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

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

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

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

    【讨论】:

    • 在这种情况下不合适...我正在尝试通过添加本地缓存来加速网络应用程序。考虑到最终用户可能在世界任何地方,网络缓存会很慢。
    • 遗憾的是,现阶段使用 Jython 太复杂了。
    猜你喜欢
    • 1970-01-01
    • 2019-08-19
    • 1970-01-01
    • 2016-04-18
    • 2017-02-20
    • 2018-12-24
    • 1970-01-01
    • 2012-03-24
    • 2014-04-15
    相关资源
    最近更新 更多