2017-10-19 105 views
0

说我有一个应用程序试图将一个字符串与一个int关联起来。有很多字符串,我想保留已发生的前N个列表。加权LRU缓存。这个方法有没有名字?

例如说琴弦是这样的:

item 0 = "Foo" 
item 1 = "Foo" 
item 2 = "Boo" 
item 3 = "Boo" 
item 4 = "Bar" 
item 5 = "Sar" 

说我的缓存有3帽以下是我想要的行为:

item 0 = TryGet "Foo" - Add. "Foo" occurrences = 1 
item 1 = TryGet "Foo" - return. "Foo" occurrences = 2 
item 2 = TryGet "Boo" - Add. "Boo" occurrences = 1 
item 3 = TryGet "Boo" - return. "Boo" occurrences = 2 
item 4 = TryGet "Bar" - Add. "Bar" occurrences = 1 
item 5 = TryGet "Sar" - At capacity. Remove elem with lowest occurrences, "Bar". Add "Sar" 

所以每个当前缓存项获得一个重量和一个新物品的容量时发现,我们抛出出现次数最少的元素。这种缓存算法有没有名字?

编辑: 我一直在寻找最频繁使用的

https://en.wikipedia.org/wiki/Cache_replacement_policies#Least-Frequently_Used_.28LFU.29

+0

这不正是[LRU(https://开头恩.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29)(您自己使用的术语)是指? –

+0

@ 500-InternalServerError:OP的所需缓存使用最不常用的逐出策略。一个LRU缓存清除了最近*使用的最少*。 –

+2

您正在寻找LFU(Least Frequently Used)缓存:https://en.wikipedia.org/wiki/Cache_replacement_policies#Least-Frequently_Used_.28LFU.29 –

回答