使用快取有兩個前置步驟
在pom.xml
引入依賴
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-data-redis
org.springframework.boot
spring-boot-starter-test
test
在啟動類上加註解@enablecaching
@enablecaching
public static void main(string args) }
常用的註解有以下幾個@cacheable、@cacheput、@cacheevict
快取的key就是配置在註解裡面的值product::123,值是你方法的返回值,如果沒有返回值,值就是org.springframework.cache.support.nullvalue
在需要加快取的方法上新增註解@cacheable(cachenames = "product", key = "123")
,
cachenames
和key
都必須填,如果不填key
,預設的key
是當前的方法名,更新快取時會因為方法名不同而更新失敗。
如在訂單列表上加快取
@cacheable(cachenames = "product", key = "123")
public listlist()
return products;
}可能會報錯,原因是物件未序列化。讓物件實現serializable
方法即可。
@data
@noargsconstructor
@allargsconstructor
public class product implements serializable
重啟專案訪問訂單列表,在 rdm 裡檢視 redis 快取,有product::123
說明快取成功。
在需要更新快取的方法上加註解:@cacheput(cachenames = "product", key = "123")
注意
在需要刪除快取的方法上加註解:cachenames
和key
要跟@cacheable()
裡的一致,才會正確更新。
@cacheput()
和@cacheable()
註解的方法返回值要一致
@cacheevict(cachenames = "product", key = "123")
,執行完這個方法之後會將 redis 中對應的記錄刪除。
cachenames
也可以統一寫在類上面,@cacheconfig(cachenames = "product")
,具體的方法上就不用寫啦。
@restcontroller
@cacheconfig(cachenames = "product")
public class prodectcontroller {}
key 也可以動態設定為方法的引數
@cacheable(cachenames = "product", key = "#id")
public product detail(@requestparam("id") integer id)else if (id==2)else
}如果引數是個物件,也可以設定物件的某個屬性為 key。比如其中乙個引數是 user 物件,key 可以寫成key="#user.id"
快取還可以設定條件。
設定當 openid 的長度大於3時才快取
@cacheable(cachenames = "product", key = "#id", condition = "#id > 2")
public void detail(@requestparam("id") string id)
還可以指定unless
即條件不成立時快取。#result
代表返回值,意思是當返回碼不等於 0 時不快取,也就是等於 0 時才快取。
@cacheable(cachenames = "product", key = "#id", condition = "#id > 2", unless = "#result!= 0")
public integer detailonconditionandunless(@requestparam("id") integer id)else
}
Redis快取註解
匯入依賴 com.fasterxml.jackson.coregroupid jackson databindartifactid 2.11.2version dependency org.springframework.bootgroupid spring boot starter data re...
Spring boot 使用註解快取
註解在spring中的應用很廣泛,幾乎成為了其標誌,這裡說下使用註解來整合快取。cache方面的註解主要有以下5個 cacheable 觸發快取入口 這裡一般放在建立和獲取的方法上 cacheevict 觸發快取的eviction 用於刪除的方法上 cacheput 更新快取且不影響方法執行 用於修...
redis快取使用
compile group org.springframework.boot name spring boot starter data redis version 2.3.2.release spring 主要引數 redis host localhost port 6379 passport 預...