java - 缓存自动过期的项目

标签 java guava

Java、Guava 或其他库中是否有可用的缓存实现可以执行以下操作:

  • 具有自动过期项目的键、值缓存。修改该值会重新启动过期计时器。每个键/值对单独过期(有自己的计时器)。
  • 可以手动添加项目,例如cache.put(key, value);

我见过 Guava LoadingCache 但该实现需要您实现 load(key) 方法。 load(key) 方法旨在使用数据库或其他资源根据键计算值。一旦通过 load(key) 方法计算出该值,我相信 LoadingCache 会将生成的(键,值)对保存在缓存中。

我的实现要求与 LoadingCache 不同,因为我的键将保持固定,但相应的值将在我抓取数据库时缓慢更新。换句话说,我不想像 LoadingCache 在其 load(key) 方法中那样立即加载整个值 - 我想保持键相同并增量更新值对象,具体取决于关于我从数据库中得到的信息。因此,这似乎排除了使用 LoadingCache,因为 load(key) 方法会强制您一次加载键的相应值。

我想要增量加载值(对于每个键)的原因是因为这将需要很长时间,并且我正在使用 AJAX 轮询来保持用户更新。因此一次性全部加载是没有用的。我想缓存这些值,以便可以使用 AJAX 轻松检索它们。我希望它们过期,因为一旦用户访问完网页,它们就毫无用处。

最佳答案

JCS支持空闲时间过期和手动添加

关于java - 缓存自动过期的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15911161/

相关文章:

java - Java中的双向 map ?

java - 是否有必要保护 JAX-RS 请求免受 CSRF 攻击?

java - Eclipse:保存服务器响应并在服务器(数据源)出现故障时返回它们

java - 如何编写具有多个参数的高效表单方法

java - 在 Java 中使用多个命名空间验证 XML

java - 是否有与 Apache Commons Collections 中的 ArrayIterator 通用的等价物?

java - 扩展 Guava 集合

java - 如何知道用于创建 .jar 文件的 mongodb 版本?

java - 用 Guava 合并范围

java - 线程中的异常 "main"java.lang.NoSuchMethodError : com. google.common.base.Preconditions.checkState(ZLjava/lang/String;Ljava/lang/Object;)