假设我有value1(在1分钟前创建),value2(在5分钟前创建)和value3(在15分钟前创建)。
我想添加以缓存最近10分钟的值。如何在Scala中做到这一点?我在Google Guava CacheLoader中只看到最大大小,但没有看到最大时间。
换句话说,我要获取value1和value2,因为它们通过了“过去10分钟”标准并逐出了15分钟前创建的value3。
Guava缓存支持timed eviction。
对于您的使用场景,您可以使用CacheBuilder
方法使用expireAfterWrite(long duration, TimeUnit unit)
创建一个使条目在10分钟后失效的缓存。 (将expireAfterWrite(long duration, TimeUnit unit)
用于10
,将duration
用于TimeUnit.MINUTES
参数。)
javadoc明确指出
[[e] xpired条目[...]永远不会对读取或写入操作可见]
所以这应该完全满足您的用例。