Spring redis 4 使用註解注意事項

2021-08-02 11:52:54 字數 2110 閱讀 1710

使用@cacheable時,該方法支援快取,有兩種key的生成方法

@cacheable(value = 「getuser」,keygenerator = 「cachekeygenerator」),

這個是使用redisconfiguration中宣告的方法cachekeygenerator

會根據自己實現的策略生成乙個key,本專案中使用的是,根據方法名和引數實現(com.example.demo.service.userservicegetuserlinjiayong12)

@cacheable(value = 「getuser」,key= 「#username」) 通過引數key來實現(linjiayong12),傳入引數設定key,利用#,如傳入的引數是user user物件,可以通過key= 「#getusername」,混合設定,傳入多個引數可以組合使用@cacheable(value = 「getuser」,key= 「#username+#username」)

參考:

@cacheable(value = "getuser",key= "#username")

public user getuser(string username)

對於使用@cacheable標註的方法,spring在每次執行前都會檢查cache中是否存在相同key的快取元素,如果存在就不再執行該方法,而是直接從快取中獲取結果進行返回,否則才會執行並將返回結果存入指定的快取中。

在使用快取操作時,需要考慮到資料庫和快取一致性問題。crud (create 建立,retrieve 讀取,update 更新,delete 刪除) 操作中,除了 查詢r操作,其他三個發生的時候都可能會造成快取結果和資料庫不一致。為了保證快取資料的一致性,在進行 cud 操作的時候需要對可能影響到的快取進行更新或者清除。

在執行更新或者插入操作時,可以通過該cacheput註解,將呼叫結果放入快取中。保持資料庫和快取一致性。

@cacheput註解時需要注意使用的是,keygenerator和key,在使用keygenerator時,

生成的key需要與@cacheable生成的key是一致的,否則再做cu操作時,不會更新@cacheable的快取。

@cacheput(value = "getuser",key = "#username")

// @cacheput(value = "getuser",keygenerator = "cachekeygenerator")

public user updateuser(string username)

@cacheput宣告乙個方法支援快取功能。與@cacheable不同的是使用@cacheput標註的方法在執行前不會去檢查快取中是否存在之前執行過的結果,而是每次都會執行該方法,並將執行結果以存入快取中。

在進行刪除操作時,需要刪除快取中的資料。

可以通過指定條件刪除快取中的的資料

可以刪除指定快取中的所有資料

@cacheevict(value="getuser",key = "#user.username")// 根據key清空getuser 快取

//@cacheevict(value="getuser",allentries=true)// getuser 快取

public

void

deluser( user user)

@cachevict 的作用 主要針對方法配置,能夠根據一定的條件對快取進行清空

在上述的幾個註解中,都可以傳入引數 condition

condition為 快取的條件

可以為空

使用 spel 編寫

返回 true 或者 false

只有為 true 才進行快取

例子@cacheable(value=」getuser」,condition=」#username.length() <=4」) 只有長度小於才進行快取

spring redis做快取使用

redis 是目前業界使用最廣泛的記憶體資料儲存。相比 memcached,redis 支援更豐富的資料結構,例如 hashes,lists,sets 等,同時支援資料持久化。除此之外,redis 還提供一些類資料庫的特性,比如事務,ha,主從庫。可以說 redis 兼具了快取系統和資料庫的一些特性...

ios NSUserDefaults使用注意事項

nsuserdefaults適合儲存輕量級的資料,他不僅可以儲存基本資料型別,還可以儲存nsnumber integer float double nsstring,nsdate,nsarray,nsdictionary,bool型別。nsuserdefaults standarduserdefau...

HttpURLConnection使用注意事項

先上簡單 第一種 urlcon.setconnecttimeout 10000 必須設定,不設定網路異常情況會卡死在connect中 urlcon.setreadtimeout 10000 urlcon.connect in new bufferedinputstream url.openstrea...