摘要:而的緩存獨立存在于我們的應(yīng)用之外,我們對數(shù)據(jù)庫中數(shù)據(jù)做了更新操作之后,沒有通知去更新相應(yīng)的內(nèi)容,因此我們?nèi)〉搅司彺嬷形葱薷牡臄?shù)據(jù),導(dǎo)致了數(shù)據(jù)庫與緩存中數(shù)據(jù)的不一致。
redis緩存
參照網(wǎng)址:
http://blog.didispace.com/spr...
項目目錄
D:testgitCloneSpringBoot-LearningChapter4-4-1
git地址:https://github.com/loqvliulia...
注意事項:
1:啟動本地redis
2:實體類實現(xiàn)序列化,并生成UID
(生成UID連接教程:http://www.cnblogs.com/qianzf/p/6811535.html)
測試Redis緩存機制:
使用redis ,填寫測試類----對應(yīng)JPA的方法:
此時測試結(jié)果,第一次第二次調(diào)用時,是正確的,第三次不正確(上面設(shè)置了為20)
思考:
為什么同樣的邏輯在EhCache中沒有問題,但是到Redis中會出現(xiàn)這個問題呢?
在EhCache緩存時沒有問題,主要是由于EhCache是進程內(nèi)的緩存框架,第一次通過select查詢出的結(jié)果被加入到EhCache緩存中,第二次查詢從EhCache取出的對象與第一次查詢對象實際上是同一個對象(可以在使用Chapter4-4-1工程中,觀察u1==u2來看看是否是同一個對象),因此我們在更新age的時候,實際已經(jīng)更新了EhCache中的緩存對象。
而Redis的緩存獨立存在于我們的Spring應(yīng)用之外,我們對數(shù)據(jù)庫中數(shù)據(jù)做了更新操作之后,沒有通知Redis去更新相應(yīng)的內(nèi)容,因此我們?nèi)〉搅司彺嬷形葱薷牡臄?shù)據(jù),導(dǎo)致了數(shù)據(jù)庫與緩存中數(shù)據(jù)的不一致。
因此我們在使用緩存的時候,要注意緩存的生命周期?。。ɡ米⒔庾龊镁彺娴母聞h除)
解決方法:
在JPA中通過@CachePut來讓數(shù)據(jù)及時更新操作同步到緩存中:
在redis-cli中flushdb,清空一下之前的緩存內(nèi)容,再執(zhí)行單元測試,可以得到正確結(jié)果:
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/71201.html
摘要:完成狀態(tài)編寫中已完成維護中原文是一個使用編寫的開源支持網(wǎng)絡(luò)基于內(nèi)存可選持久性的鍵值對存儲數(shù)據(jù)庫維基百科是目前業(yè)界使用廣泛的基于內(nèi)存的數(shù)據(jù)庫。 完成狀態(tài) [ ] 編寫中 [ ] 已完成 [x] 維護中 原文 Redis Redis是一個使用ANSI C編寫的開源、支持網(wǎng)絡(luò)、基于內(nèi)存、可選持久性的鍵值對存儲數(shù)據(jù)庫 ------ 維基百科 Redis 是目前業(yè)界使用廣泛的基于內(nèi)存的...
摘要:相比它支持存儲的類型相對更多字符哈希集合有序集合列表,同時是線程安全的?;诘倪B接實例,可以在多個線程間并發(fā)訪問,且線程安全,滿足多線程環(huán)境下的并發(fā)訪問,同時它是可伸縮的設(shè)計,一個連接實例不夠的情況也可以按需增加連接實例。 SpringBoot 是為了簡化 Spring 應(yīng)用的創(chuàng)建、運行、調(diào)試、部署等一系列問題而誕生的產(chǎn)物,自動裝配的特性讓我們可以更好的關(guān)注業(yè)務(wù)本身而不是外部的XML...
閱讀 3240·2021-11-24 09:39
閱讀 3179·2021-10-21 09:38
閱讀 2406·2019-08-29 15:28
閱讀 3748·2019-08-26 12:23
閱讀 2623·2019-08-26 12:19
閱讀 1369·2019-08-23 12:44
閱讀 2135·2019-08-23 12:02
閱讀 1007·2019-08-22 17:05