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/