2017-10-19 107 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 –

回答