spring boot redis

NO IMAGE
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

redis快取
參照網址:
http://blog.didispace.com/spr…
專案目錄
D:testgitCloneSpringBoot-LearningChapter4-4-1
git地址:https://github.com/loqvliulia…

注意事項:
1:啟動本地redis
2:實體類實現序列化,並生成UID

 (生成UID連線教程:http://www.cnblogs.com/qianzf/p/6811535.html)

測試Redis快取機制:
圖片描述

使用redis ,填寫測試類—-對應JPA的方法:
圖片描述

此時測試結果,第一次第二次呼叫時,是正確的,第三次不正確(上面設定了為20)
圖片描述

思考:
為什麼同樣的邏輯在EhCache中沒有問題,但是到Redis中會出現這個問題呢?
在EhCache快取時沒有問題,主要是由於EhCache是程序內的快取框架,第一次通過select查詢出的結果被加入到EhCache快取中,第二次查詢從EhCache取出的物件與第一次查詢物件實際上是同一個物件(可以在使用Chapter4-4-1工程中,觀察u1==u2來看看是否是同一個物件),因此我們在更新age的時候,實際已經更新了EhCache中的快取物件。
而Redis的快取獨立存在於我們的Spring應用之外,我們對資料庫中資料做了更新操作之後,沒有通知Redis去更新相應的內容,因此我們取到了快取中未修改的資料,導致了資料庫與快取中資料的不一致。
因此我們在使用快取的時候,要注意快取的生命週期!!(利用註解做好快取的更新刪除)
解決方法:
在JPA中通過@CachePut來讓資料及時更新操作同步到快取中:
圖片描述
在redis-cli中flushdb,清空一下之前的快取內容,再執行單元測試,可以得到正確結果:
圖片描述

相關文章

程式語言 最新文章