Java使用持久性进行memoize / cache,将源代码作为缓存键

时间:2013-11-20 20:33:59

标签: java spring caching persistent memoization

我正在寻找一个通用的memoizer,只需在方法定义上方添加注释/装饰器即可应用于任何方法。例如,Spring Framework提供了@Cacheable。 http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/cache.html

但是,我还需要以下功能:

  1. 缓存应该保留在磁盘上,以便我在重新运行代码时不必重新计算值
  2. 缓存键应该是方法源代码的函数,因此如果我在运行之间更改代码,则memoizer不会错误地重新加载旧结果
  3. 在Python中,Joblib是一个提供这种确切功能的流水线工具。有可能让Spring的@Cacheable这样做吗?还是减肥方式?

    如果这会触发任何人的记忆,这里有一个工具列表,似乎可能会有所帮助。我无法对所有这些进行深入调查。

    • Guava的缓存库
    • AspectJ的
    • Ehcache(看起来这比我需要的更多)
    • javax.cache
    • Java缓存系统
    • 流水线系统:pipe4j,Apache Commons Pipeline
    • Tek271 Memoizer(文档不多)

1 个答案:

答案 0 :(得分:0)

我建议查看imcache。你可以使用@Cacheable,imcache会通过EvictionListener将被驱逐的值保存到磁盘。