所謂緩存,就是將程序或系統經常要調用的對象存放在一個可以快速訪問的地方,一便其使用時可以快速取到,不必再調用具體業務。這樣做可以減少系統開銷,提高系統效率。二級緩存則是由於在分佈式系統中,一般會使用集中緩存來緩存數據,例如redis,此時集中式緩存在高併發場景下時,就很容易被擊垮。l2cache則是以redis作爲二級緩存,內存作爲一級緩存,讓併發時的大部分請求從內存中響應,這樣最大程度提高緩存效能。同時通過一定的設計,l2cache支持自動緩存降級,可以防緩存擊穿,同時可以很容易的拓展爲其它多級緩存。讓緩存使用更容易。
l2cache執行流程圖
快速入門
1.在maven管理的spring-boot項目中引入依賴,(建議使用spring-boot版本1.4以上,1.4以下未測試過)
<dependency>
<groupId>com.gitee.reger</groupId>
<artifactId>spring-boot-starter-l2cache</artifactId>
<version>${spring-boot-starter-l2cache.version}</version>
</dependency>
2.在spring-boot項目的配置文件’application.yml’中增加redis的配置項
spring:
redis:
host: localhost
port: 6379
# password:
3.通過@L2Cache
開始體驗二級緩存
在需要使用二級緩存加載數據的方法上,加上註解@L2Cache(key=’用來生成cachekey的spel表達式’,timeOut=’緩存超時時間’)
例如
@L2Cache(key="'test.id.'+#id",timeOut=2000)
public Object findById(int id) {
System.err.println("進入緩存執行的方法");
return "hello word ! findById " +id;
}
4.通過@L2PutCache強制更新二級緩存中的數據
有時在某些操作完畢後,需要主動更新緩存,使緩存立即失效,此時便需要強制更新二級緩存的數據。在這個時候,你只需要在方法上添加@L2PutCache(key=’用來生成cachekey的spel表達式’,timeOut=’緩存超時時間’)。
例如
@L2PutCache(key="'test.id.'+#id",timeOut=20000)
public Object updateById(int id) {
System.err.println("執行完畢會強制緩存...");
return "hello word ! updateById " +id;
}
5.通過@L2DelCache刪除二級緩存中的數據
在一些操作完畢後,數據被刪除,需要在緩存中立即生效。在這個時候,你只需要在方法上添加@L2DelCache(key=’用來生成cachekey的spel表達式’)。
例如
@L2DelCache(key="'test.id.'+#id")
public void del(int id) {
System.err.println("執行完畢會清理緩存...");
}
相關資源
spring-boot-starter-l2cache git地址