天天看點

Java 使用LRUmap設計一個簡單的緩存場景

前言

LRUmap的作用是啥,Least Recently Used  最近最少使用的-淘汰。

那麼該篇内容即是給初學者介紹一下LRUmap的使用。

正文

在該篇文章裡,我們使用的LRUmap 來自:

import org.apache.commons.collections4.map.LRUMap;      

maven依賴:

<dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-collections4</artifactId>
            <version>4.4</version>
        </dependency>      

結合執行個體來介紹LRUmap的使用:

執行個體1

Java 使用LRUmap設計一個簡單的緩存場景

可以看到,我們new了一個LRUMap,設定最大保留的值數量為 3 個。

也就是說,當我們往 LRUMap裡面 放入的值超過3,就會觸發淘汰機制,按照最近未使用的順序去淘汰多餘的值,保持永遠隻剩下最近使用的 3個值。

執行個體裡的的代碼,我們丢了4個key -value進去,那麼最近未使用的,會被淘汰的,顯然就是最早丢進去的key ‘A’。

是以該執行個體運作結果(A 被淘汰了):

Java 使用LRUmap設計一個簡單的緩存場景

緊接着看再看這個執行個體:

執行個體2

Java 使用LRUmap設計一個簡單的緩存場景

可以看到這個代碼,A 被使用了一下。 那麼 最近未被使用的key 就顯然是key ‘B’ 了 。 是以當插入LRUMap的值超過設定的最大保留上限,被淘汰的就是key ‘B’ :

Java 使用LRUmap設計一個簡單的緩存場景

通過這兩個簡單的執行個體,想必大家很輕松地了解到了LRUMap的作用了,那麼利用這個LRUMap來設計一些簡單的小緩存,就非常簡單了。

例如,

做一個簡單的使用者最近搜尋使用的六個搜尋詞 ;

做一個簡單的最近登入的使用者的手機号/賬戶;

做一個簡單的... 很多小的使用場景,大家都可以自己利用這個‘最近未使用’ 淘汰機制來進行業務場景實作。