Java 中的分段 LRU 缓存
Segmented LRU Cache in Java
我必须在 Java 中实现分段 LRU 缓存。无法理解哪种数据结构可以用于它是有效的。我们如何将缓存分为两个部分,即试用版和受保护版?
这里有一个link用于SLRU缓存的逐出策略。
https://en.wikipedia.org/wiki/Cache_replacement_policies#Segmented_LRU_(SLRU)
谢谢!
在Java中,LRU缓存通常用LinkedHashMap来实现。这是一个在节点之间具有内部排序的哈希图。
对于分段的 LRU 缓存,您需要创建一个包含其中两个映射的缓存 class。
对于受保护的映射,使用带有accessOrder = true
的构造函数,这样每次访问条目时,它都会将其移动到内部排序的末尾。
您应该创建重写 removeEldestEntry 方法的子classes 以自动使条目过期并在必要时将它们从受保护部分移至试用部分。
将缓存命中从试用地图移动到受保护地图必须由您的缓存完成 class。
我必须在 Java 中实现分段 LRU 缓存。无法理解哪种数据结构可以用于它是有效的。我们如何将缓存分为两个部分,即试用版和受保护版?
这里有一个link用于SLRU缓存的逐出策略。 https://en.wikipedia.org/wiki/Cache_replacement_policies#Segmented_LRU_(SLRU)
谢谢!
在Java中,LRU缓存通常用LinkedHashMap来实现。这是一个在节点之间具有内部排序的哈希图。
对于分段的 LRU 缓存,您需要创建一个包含其中两个映射的缓存 class。
对于受保护的映射,使用带有accessOrder = true
的构造函数,这样每次访问条目时,它都会将其移动到内部排序的末尾。
您应该创建重写 removeEldestEntry 方法的子classes 以自动使条目过期并在必要时将它们从受保护部分移至试用部分。
将缓存命中从试用地图移动到受保护地图必须由您的缓存完成 class。