今天小編給大家分享的是redis數(shù)據(jù)緩存一致的必要性及實(shí)現(xiàn)方法,很多人都不太了解,今天小編為了讓大家更加了解redis數(shù)據(jù)緩存,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。一定會(huì)有所收獲的哦。
創(chuàng)新互聯(lián)公司技術(shù)團(tuán)隊(duì)10多年來(lái)致力于為客戶提供成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)、高端網(wǎng)站設(shè)計(jì)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過(guò)多年發(fā)展,公司擁有經(jīng)驗(yàn)豐富的技術(shù)團(tuán)隊(duì),先后服務(wù)、推廣了千余家網(wǎng)站,包括各類(lèi)中小企業(yè)、企事單位、高校等機(jī)構(gòu)單位。所謂的redis數(shù)據(jù)一致性即當(dāng)進(jìn)行修改或者保存、刪除之后,redis中的數(shù)據(jù)也應(yīng)該進(jìn)行相應(yīng)變化,不然用戶再次查詢的時(shí)候很可能查詢出已經(jīng)刪除過(guò)的臟數(shù)據(jù)。
一、緩存一致的必要性
還是接上篇來(lái)說(shuō),我們已經(jīng)解決了redis緩存穿透的問(wèn)題(簡(jiǎn)單解決方案,可以再次優(yōu)化),但是使用redis的時(shí)候緩存一致性的問(wèn)題我們也需要著重考慮,例如:保存了一個(gè)新用戶之后,就應(yīng)該同時(shí)在redis緩存中也插入該條數(shù)據(jù),更新了某條數(shù)據(jù)在緩存中也應(yīng)該同步更新,而redis默認(rèn)的做法是:當(dāng)你不去設(shè)置的時(shí)候redis中存放的一值是你之前存放的數(shù)據(jù),只有在重啟服務(wù)器的時(shí)候數(shù)據(jù)才會(huì)同步,顯然這是非常不可取的,如果是這樣的話豈不是每時(shí)每刻都要重啟服務(wù)器,那將是多么大的災(zāi)難!
二、業(yè)務(wù)場(chǎng)景
這里我只說(shuō)一個(gè)場(chǎng)景吧,其他場(chǎng)景都是一樣的處理辦法,場(chǎng)景為:假設(shè)我們將用戶數(shù)據(jù)放入到redis中,此時(shí)有新用戶注冊(cè),在數(shù)據(jù)庫(kù)中會(huì)插入一條新數(shù)據(jù),與此同時(shí)要在redis中也插入該條數(shù)據(jù),以便于下次查詢的時(shí)候顯示最新數(shù)據(jù)。
我們先來(lái)看一下默認(rèn)不使用任何處理的情況下redis是否會(huì)為我們做一致性操作,現(xiàn)在我的測(cè)試數(shù)據(jù)庫(kù)中有18條用戶數(shù)據(jù),此時(shí)我們啟動(dòng)系統(tǒng)后注冊(cè)插入第19條數(shù)據(jù)后看下redis中是否有19條。
經(jīng)過(guò)注冊(cè)之后我現(xiàn)在給數(shù)據(jù)庫(kù)中插入了第19條數(shù)據(jù)
接著我們還是使用上篇提到過(guò)的查詢緩存的方法來(lái)獲取下所有信息,我們直接來(lái)看第最后一條,可以看到最后是潤(rùn)青而不是十九,所以redis默認(rèn)是沒(méi)有替我們做緩存一致操作的。
三、緩存一致性實(shí)現(xiàn)(方案1)
其實(shí),要想實(shí)現(xiàn)一致性很簡(jiǎn)單,當(dāng)我們?cè)谶M(jìn)行插入操作之后,我們把該條數(shù)據(jù)取出來(lái)同時(shí)保存到redis緩存中去,這樣再次查詢緩存的時(shí)候我們也可以看到新的數(shù)據(jù),代碼如下:
需要注意的是:我這里直接是調(diào)用JPA的findAll(),其實(shí)更好的做法是根據(jù)id去更新剛插入的那一條,這樣效率才高,這里只是演示如何實(shí)現(xiàn),接著再來(lái)注冊(cè)一條新數(shù)據(jù),看看是否可以在緩存中同時(shí)看到:新插入的數(shù)據(jù)id為29,我們來(lái)看下緩存是否存在該條新數(shù)據(jù)
四、redis緩存一致性實(shí)現(xiàn)(方案2)
定期清除redis中的數(shù)據(jù),例如設(shè)置一個(gè)定時(shí)任務(wù),每當(dāng)一個(gè)小時(shí)的時(shí)候就會(huì)清除redis中的數(shù)據(jù),也就是讓redis中的數(shù)據(jù)失效,然后再次保存、刪除的時(shí)候之前的 redis中的數(shù)據(jù)已經(jīng)不存在,所以相當(dāng)于是將數(shù)據(jù)重新設(shè)置到redis中去,所以可以保證數(shù)據(jù)的一致性。
以上就是redis數(shù)據(jù)緩存一致的必要性及實(shí)現(xiàn)方法的簡(jiǎn)略介紹,當(dāng)然詳細(xì)使用上面的不同還得要大家自己使用過(guò)才領(lǐng)會(huì)。如果想了解更多,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道哦!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。