註解方式使用 Redis 快取

2021-10-09 19:39:13 字數 2472 閱讀 8613

使用快取有兩個前置步驟

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"),

cachenameskey都必須填,如果不填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")注意

cachenameskey要跟@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 預...