我在以下场景中需要它:
1.从网络连续接收数据。 2.收到的数据被添加到队列缓冲区。
在队列缓冲区中添加的数据将具有预定义的TimeToLive。 如果我在队列中添加Data1,它可以活到X秒。
Guava提供基于时间的缓存,但它是基于密钥的,不是有序的。对于我在数据库中插入数据时的排序非常重要,因为我想要轮询和处理数据。
如果有人知道可能已订购的某些现有库/缓存api,请分享基于时间的驱逐实施。
答案 0 :(得分:0)
如果我没记错的话,我也有类似的问题,发现番石榴在这一点上也不够用。
也许您可以将数据存储在简单队列中,只存储对缓存中项目的引用。 在参考缓存上使用处理程序,您可以在它们过期时收到通知,然后手动从数据队列中删除被驱逐的项目。
答案 1 :(得分:0)
您似乎不需要任何缓存。
拉出条目时,检查它是否仍然存在并处理或丢弃。如果你想节省内存,做一些定期剔除(通过拉动和过滤所有元素)。
滥用任何缓存只会让情况变得更糟: