微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java 中的分段 LRU 缓存

如何解决Java 中的分段 LRU 缓存

我必须在 Java 中实现分段 LRU 缓存。无法理解哪种数据结构可以用于它,这将是有效的。我们如何将缓存分为两个部分,即试用版和保护版?

这是 SLRU 缓存驱逐政策的链接https://en.wikipedia.org/wiki/Cache_replacement_policies#Segmented_LRU_(SLRU)

谢谢!

解决方法

在 Java 中,LRU 缓存通常使用 LinkedHashMap 实现。这是一个在节点之间具有内部顺序的哈希图。

对于分段 LRU 缓存,您需要创建一个包含其中两个映射的缓存类。

对于受保护的映射,使用带有 accessOrder = true 的构造函数,这样每次访问条目时,它都会将其移动到内部排序的末尾。

您应该创建覆盖 removeEldestEntry 方法的子类,以自动使条目过期,并在必要时将它们从受保护的段移至试用段。

将缓存命中从试用映射移动到受保护映射必须由您的缓存类完成。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。