ExpiringMap學習總結
一、ExpiringMap簡介
ExpiringMap是一個輕量級的Java緩存方式
針對一些小體量的項目,存儲的數據量也不是很大(如校驗碼)的情況下,使用Redis會增加系統的復雜性和維護難度。它的功能和Redis類似。
ExpiringMap特點:可設置存儲元素的過期時間,可設置最大的數據元素存儲量,可添加監聽事件和設置懶加載等。
二、ExpiringMap 使用示例
1、導入ExpiringMap依賴,可到Maven倉庫選擇需要的依賴版本:
<dependency> <groupId>net.jodah</groupId> <artifactId>expiringmap</artifactId> <version>0.5.8</version> </dependency>
2、初始化一個ExpiringMap(配置過期時間、過期協議等)
/** maxSize: 設置最大值,添加第11個entry時,會導致第1個立馬過期(即使沒到過期時間) * expiration:設置每個key有效時間10s, 如果key不設置過期時間,key永久有效。 * variableExpiration: 允許更新過期時間值,如果不設置variableExpiration,不允許后面更改過期時間,一旦執行更改過期時間操作會拋異常UnsupportedOperationException * policy-策略: * CREATED: 只在put和replace方法清零過期時間 * ACCESSED: 在CREATED策略基礎上增加, 在還沒過期時get方法清零過期時間。 * 清零過期時間也就是重置過期時間,重新計算過期時間. * 注意: 在創建map時,指定的那些參數如過期時間和過期策略都是全局的, 對map中添加的每一個entry都適用. * 在put一個entry鍵值對時可以對當前entry 單獨設置 過期時間、過期策略,只對當前這個entry有效. */ private final static ExpiringMap<String, String> map = ExpiringMap.builder() .maxSize(10) // 設置過期時間60毫秒 .expiration(60, TimeUnit.MILLISECONDS) .variableExpiration() // 設置過期協議 .expirationPolicy(ExpirationPolicy.CREATED).build();
3、ExpiringMap實例
public static void main(String[] args) { map.put("token", "lkj2412lj1412412nmlkjl2n34l23n4"); // 模擬線程等待61毫秒... try { Thread.sleep(61); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("token ===> " + map.get("token")); } 【控制臺輸出】:token ===> null
4、使用ExpiringMap存和取
// 存入一個字符串對象 map.put("token", "lkj2412lj1412412nmlkjl2n34l23n4"); // 取出存入的對象值 String token = map.get("token");
古今成大事者,不唯有超世之才,必有堅韌不拔之志!

浙公網安備 33010602011771號