91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現redis數據一致性

發布時間:2022-03-18 11:24:02 來源:億速云 閱讀:266 作者:小新 欄目:開發技術

小編給大家分享一下如何實現redis數據一致性,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一、緩存一致的必要性

還是接上篇來說,我們已經解決了redis緩存穿透的問題(簡單解決方案,可以再次優化),但是使用redis的時候緩存一致性的問題我們也需要著重考慮,例如:保存了一個新用戶之后,就應該同時在redis緩存中也插入該條數據,更新了某條數據在緩存中也應該同步更新,而redis默認的做法是:當你不去設置的時候redis中存放的一值是你之前存放的數據,只有在重啟服務器的時候數據才會同步,顯然這是非常不可取的,如果是這樣的話豈不是每時每刻都要重啟服務器,那將是多么大的災難!

二、業務場景

這里我只說一個場景吧,其他場景都是一樣的處理辦法,場景為:假設我們將用戶數據放入到redis中,此時有新用戶注冊,在數據庫中會插入一條新數據,與此同時要在redis中也插入該條數據,以便于下次查詢的時候顯示最新數據。

我們先來看一下默認不使用任何處理的情況下redis是否會為我們做一致性操作,現在我的測試數據庫中有18條用戶數據,此時我們啟動系統后注冊插入第19條數據后看下redis中是否有19條。

如何實現redis數據一致性

經過注冊之后我現在給數據庫中插入了第19條數據

如何實現redis數據一致性

接著我們還是使用上篇提到過的查詢緩存的方法來獲取下所有信息,我們直接來看第最后一條,可以看到最后是潤青而不是十九,所以redis默認是沒有替我們做緩存一致操作的。

如何實現redis數據一致性

三、緩存一致性實現(方案1)

其實,要想實現一致性很簡單,當我們在進行插入操作之后,我們把該條數據取出來同時保存到redis緩存中去,這樣再次查詢緩存的時候我們也可以看到新的數據,代碼如下:

如何實現redis數據一致性

需要注意的是:我這里直接是調用JPA的findAll(),其實更好的做法是根據id去更新剛插入的那一條,這樣效率才高,這里只是演示如何實現,接著再來注冊一條新數據,看看是否可以在緩存中同時看到:新插入的數據id為29,我們來看下緩存是否存在該條新數據

如何實現redis數據一致性

如何實現redis數據一致性

四、redis緩存一致性實現(方案2)

定期清除redis中的數據,例如設置一個定時任務,每當一個小時的時候就會清除redis中的數據,也就是讓redis中的數據失效,然后再次保存、刪除的時候之前的 redis中的數據已經不存在,所以相當于是將數據重新設置到redis中去,所以可以保證數據的一致性。

以上是“如何實現redis數據一致性”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

营口市| 登封市| 封开县| 元朗区| 海淀区| 武定县| 万安县| 江源县| 六枝特区| 通山县| 白沙| 虎林市| 上思县| 新竹市| 平和县| 布拖县| 个旧市| 襄汾县| 宿迁市| 安吉县| 鹤壁市| 雷波县| 花垣县| 高要市| 九寨沟县| 兴仁县| 梁山县| 连城县| 山西省| 清水河县| 吐鲁番市| 峨眉山市| 苏州市| 甘德县| 邹平县| 育儿| 漳平市| 翼城县| 舒城县| 文山县| 平山县|