最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關于Redis的讀寫一致問題

 更新時間:2023年08月13日 09:37:18   作者:愛發(fā)博客的嗯哼  
在項目使用Redis過程中,當數(shù)據(jù)更新時,我們要保證緩存和數(shù)據(jù)庫的一致性,否則會導致很多臟數(shù)據(jù)出現(xiàn),此時我們就要思考如何去進行數(shù)據(jù)更新,本文就給大家講講關于redis的讀寫一致問題,需要的朋友可以參考下

一、普通刪除

在數(shù)據(jù)更新過程中,大家無非使用兩種方法進行緩存和數(shù)據(jù)庫的更新

  • 先刪除緩存,再更新數(shù)據(jù)庫
  • 先更新數(shù)據(jù)庫,再更新緩存

那這兩種方法究竟有什么不同呢?

1. 先刪除緩存

在這里插入圖片描述

問題:此時緩存有了舊數(shù)據(jù),在下次修改此數(shù)據(jù)之前,所有請求獲取的都是舊數(shù)據(jù),導致讀寫不一致

2. 后刪除緩存

在這里插入圖片描述

問題1:在小明修改數(shù)據(jù)庫到刪除緩存這段時間,所有請求都是舊數(shù)據(jù)

問題2:如果緩存刪除失敗,后續(xù)所有請求都是舊數(shù)據(jù)(這個問題開啟事務的話,就可以解決)

二、雙刪策略

在普通刪除策略中,大家會發(fā)現(xiàn)后刪緩存策略是比較好的一種,但還是存在一點問題,所以提出了雙刪策略

關于這個地方我是存在疑問的,因為我認為雙刪并不會比后刪緩存策略更好,反而增加了一次數(shù)據(jù)庫查詢的操作。但有的博客卻提了這個策略,我就在這里提一下,大家可以在評論進行交流

1. 普通雙刪

在這里插入圖片描述

問題:因為線程調度一些問題導致查詢后寫入緩存停止,會導致舊緩存依舊存在

2. 延遲雙刪

在這里插入圖片描述

這樣的話看似把普通雙刪的問題給解決了,但并沒有完全解決,反而引發(fā)新的問題。

問題:延時時長問題,時間太長導致性能下降,時間太短又會跟普通雙刪一樣

三、讀寫鎖

讀寫鎖根據(jù)字面意思就知道是加鎖,因此效率肯定比不加鎖效率低,但是可以完全避免舊數(shù)據(jù)讀取的發(fā)生。

  • 讀寫鎖是讀讀共享,讀寫和寫寫互斥的

    在這里插入圖片描述

四、異步通知

1. 消息中間件異步通知

在這里插入圖片描述

  • 對于這個博主認為是把延遲雙刪的延遲給優(yōu)化了,不再占用本線程的時間,只不過部分請求會導致舊數(shù)據(jù)。

2.Canal

Canal是一個開源的數(shù)據(jù)庫數(shù)據(jù)增量訂閱和消費組件,用于實時捕獲數(shù)據(jù)庫的變更并將其傳遞給其他系統(tǒng)。具體而言,Canal主要用于解決數(shù)據(jù)庫之間的數(shù)據(jù)同步和實時數(shù)據(jù)分析需求。 Canal支持對MySQL、Oracle等主流數(shù)據(jù)庫進行增量數(shù)據(jù)訂閱和消費。它通過解析數(shù)據(jù)庫的日志(如MySQL的binlog或Oracle的redo log),實時捕獲數(shù)據(jù)庫的變更操作,然后將變更數(shù)據(jù)以事件的形式發(fā)送給訂閱者。可以將這些變更數(shù)據(jù)用于數(shù)據(jù)同步、實時數(shù)據(jù)倉庫、搜索引擎索引更新、緩存更新等應用場景。 Canal的主要特性包括:

  • .數(shù)據(jù)庫無侵入:Canal通過解析數(shù)據(jù)庫日志來捕獲數(shù)據(jù)變更,不需要對數(shù)據(jù)庫進行任何修改,不會對數(shù)據(jù)庫的性能產(chǎn)生影響。
  • 實時的增量數(shù)據(jù):Canal能夠幾乎實時地捕獲到數(shù)據(jù)庫的變更操作,并以事件的形式進行傳遞,保證了數(shù)據(jù)的實時性。
  • 靈活的訂閱和過濾:Canal支持基于數(shù)據(jù)庫、表、列級別的訂閱和過濾,可以按需選擇需要同步的數(shù)據(jù),減少數(shù)據(jù)傳輸和處理的壓力。
  • 多種協(xié)議支持:Canal支持多種數(shù)據(jù)傳輸協(xié)議,如基于TCP的簡單文本協(xié)議、Kafka、RocketMQ等,可以根據(jù)具體需求選擇適合的協(xié)議進行數(shù)據(jù)傳輸。
  • 高可用和容錯:Canal支持多節(jié)點部署,通過主備模式或者集群模式來保證高可用性和容錯性。

五. 總結

總體來說這幾種方式各有優(yōu)缺點,不過現(xiàn)在主要用的就是普通刪除中的后刪緩存的方法,如果一致性要求比較高的話,可以用讀寫鎖的方式,如果沒有那么強的一致性要求,可以使用后刪緩存或者異步通知的方式。

結語

每個人都有自己獨特的才華和潛能,在這個廣袤的世界上,你的存在是有意義的。無論你是誰,你的背景如何,你所處的環(huán)境怎樣,只要你敢于跨出舒適區(qū),付出努力,追求卓越,你就能夠開創(chuàng)屬于自己的輝煌。

以上就是關于Redis的讀寫一致問題的詳細內(nèi)容,更多關于Redis讀寫一致的資料請關注腳本之家其它相關文章!

相關文章

  • Redis中事件驅動模型示例詳解

    Redis中事件驅動模型示例詳解

    Redis這個數(shù)據(jù)庫相信不用過多介紹了,大家應該都知道,下面這篇文章主要給大家介紹了關于Redis中事件驅動模型的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2018-03-03
  • Redis內(nèi)存碎片原理深入分析

    Redis內(nèi)存碎片原理深入分析

    這篇文章主要為大家介紹了Redis內(nèi)存碎片原理深入分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Redis服務器的啟動過程分析

    Redis服務器的啟動過程分析

    這篇文章主要介紹了Redis服務器的啟動過程分析,本文講解了初始化Redis服務器全局配置、加載配置文件、初始化服務器、加載數(shù)據(jù)、開始網(wǎng)絡監(jiān)聽等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Redis?中使用?list,streams,pub/sub?幾種方式實現(xiàn)消息隊列的問題

    Redis?中使用?list,streams,pub/sub?幾種方式實現(xiàn)消息隊列的問題

    這篇文章主要介紹了Redis?中使用?list,streams,pub/sub?幾種方式實現(xiàn)消息隊列,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • redis分布式設計的實現(xiàn)示例

    redis分布式設計的實現(xiàn)示例

    Redis 的分布式設計主要通過三種模式實現(xiàn),每種模式解決不同的問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-05-05
  • 詳解如何利用Redis實現(xiàn)生成唯一ID

    詳解如何利用Redis實現(xiàn)生成唯一ID

    隨著下單流量逐漸上升,為了降低數(shù)據(jù)庫的訪問壓力,需要通過請求唯一ID+redis分布式鎖來防止接口重復提交。今天我們就一起來看探討一下,如何通過服務端來完成請求唯一?ID?的生成
    2022-11-11
  • 通過Redisson監(jiān)聽Redis集群的Key過期事件的實現(xiàn)指南

    通過Redisson監(jiān)聽Redis集群的Key過期事件的實現(xiàn)指南

    在分布式系統(tǒng)中,監(jiān)聽 Redis 鍵過期事件是實現(xiàn)緩存失效、訂單超時取消等功能的常用方案,本文將詳細介紹如何通過 Redisson 高效監(jiān)聽 Redis 集群的 Key 過期事件,需要的朋友可以參考下
    2025-11-11
  • Redis中key過期策略的實現(xiàn)

    Redis中key過期策略的實現(xiàn)

    Key的過期機制是Redis保持高可用性的重要策略,過期策略分為惰性過期和定期過期,惰性過期在每次訪問key時檢查是否過期,定期過期則由serverCron方法定時清理過期key,本文就來詳細的介紹一下,感興趣的可以了解一下
    2024-09-09
  • 利用Redis實現(xiàn)點贊功能的示例代碼

    利用Redis實現(xiàn)點贊功能的示例代碼

    點贊對我們來說并不陌生,我們經(jīng)常會在手機軟件或者網(wǎng)頁中看到它。今天就讓我們來了解一下如何用Redis實現(xiàn)這一功能吧,感興趣的可以嘗試一下
    2022-06-06
  • Redis集群的槽分配的幾種實現(xiàn)方法

    Redis集群的槽分配的幾種實現(xiàn)方法

    Redis集群中的槽用來管理和分配數(shù)據(jù)到不同的節(jié)點,Redis集群總共有 16384個槽,所有的鍵根據(jù)哈希值被分配到這些槽中,下面將詳細介紹 Redis 集群的槽分配機制,感興趣的可以了解一下
    2025-09-09

最新評論

抚远县| 盖州市| 太和县| 湘阴县| 沾益县| 衡东县| 梁河县| 克东县| 陆川县| 张家界市| 镇平县| 张家口市| 韩城市| 蕉岭县| 安西县| 柳林县| 嫩江县| 乌拉特前旗| 都江堰市| 五大连池市| 漯河市| 丁青县| 宁强县| 和静县| 遵义市| 安达市| 松滋市| 茂名市| 崇文区| 砀山县| 深圳市| 兴海县| 富裕县| 阳西县| 江津市| 施秉县| 黔南| 靖宇县| 永泰县| 万盛区| 天祝|