【redis使用場景——緩存——雙寫一致性】

redis使用場景——緩存——雙寫一致性

  • 雙寫一致性問題的本質與場景
  • 典型不一致場景分析
    • ??并發寫操作導致的不一致??
    • ??讀寫交叉導致的不一致??
    • ??主從同步延遲導致的不一致??
  • 解決
    • 延遲雙刪策略(推薦)
      • 優點??:
      • ??缺點??:
    • 分布式讀寫鎖方案
      • 優點??:
      • ??缺點??:
  • 消息隊列異步補償

雙寫一致性問題的本質與場景

雙寫一致性指的是當修改數據庫數據時,也需要同步更新緩存數據,確保緩存和數據庫的數據保持一致。這一問題在高并發場景下尤為突出,據統計,電商大促期間因緩存不一致導致的訂單異常可達總故障的37%。

典型不一致場景分析

??并發寫操作導致的不一致??

線程A更新數據庫為100,開始更新Redis時出現卡頓
線程B更新數據庫為80,并成功更新Redis為80
線程A恢復后繼續更新Redis為100
最終結果:MySQL=80,Redis=100,數據不一致

??讀寫交叉導致的不一致??

線程A更新數據庫為99
線程B從Redis讀取舊值100
線程A刪除Redis緩存
最終用戶B獲得過期數據

??主從同步延遲導致的不一致??

主庫更新后立即刪除Redis緩存
從庫尚未同步最新數據
查詢請求從從庫讀取舊數據并回填Redis
導致Redis中保留舊數據

解決

延遲雙刪策略(推薦)

在更新數據庫前后各刪除一次緩存,第二次刪除采用延遲方式(??考慮到主從同步延遲??和??并發讀寫競爭??)

優點??:

  • 實現相對簡單
  • 性能影響較小
  • 保證最終一致性

??缺點??:

  • 無法保證強一致性
  • 延遲時間難以精確設定(需考慮主從同步時間)
  • 吞吐量會降低
  • ??適用場景??:允許數據短暫不一致、對性能要求較高的場景,如文章瀏覽量更新

分布式讀寫鎖方案

??核心思想??:通過讀寫鎖控制并發訪問,讀操作加讀鎖,寫操作加寫鎖

優點??:

  • 保證強一致性
  • 從根源避免讀寫并發問題

??缺點??:

  • 性能影響較大(吞吐量可能下降40%-60%)
  • 代碼侵入性強
  • 鎖競爭可能導致延遲
  • ??適用場景??:金融交易、賬戶余額等對一致性要求極高的系統

消息隊列異步補償

??核心思想??:通過消息隊列(MQ)保證緩存操作最終執行

數據庫 → Binlog → 消息隊列 → 緩存更新Worker → Redis

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/910419.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/910419.shtml
英文地址,請注明出處:http://en.pswp.cn/news/910419.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【ArcGIS】在線影像底圖調用

【ArcGIS】在線影像底圖調用 一、 歷史影像的調用二、ArcGIS online底圖調用三、結語 一、 歷史影像的調用 ESRI官方推出了World Imagery Wayback是一個提供全球范圍內歷史影像的在線服務。 官網地址:https://livingatlas.arcgis.com/wayback/ 操作步驟&#xff1…

密度估計:從零星足跡重建整體畫像

想象你是一位偵探,案發現場只留下幾個零散的腳印。**如何通過這些碎片,推斷嫌疑人的身高體重?甚至預測他下一步的藏身之處?** 這種從局部反推整體的能力,正是**密度估計(Density Estimation)** …

B004基于STM32F401單片機簡易交通燈實訓數碼管顯示設計仿真資料

視頻演示地址:https://www.bilibili.com/video/BV1GvNDzFEd9/ 運行環境 仿真軟件:proteus8.17(切記別的版本不能運行) 編程軟件:MDK525 STM32 cubmx版本:6.11.1(切記別的版本不能運行) 原理圖畫圖軟件:AD10 功能說明: 以STM32F401CB單片機為核心簡易交通燈功能如下。…

沒掌握的知識點記錄

1、微內核的主要優點在于結構清晰、內核代碼量少,安全性和可靠性高、可移植性強、可伸縮性、可擴展性高;其缺點是難以進行良好的整體優化、進程間互相通信的開銷大、內核功能代碼不能被直接調用而帶來服務的效率低。 2、題目: 分頁內存管理…

linux 遠程終端執行qt應用顯示到接入的物理顯示器上

在顯示器打開終端執行: xhost local: 在遠程終端執行: export DISPLAY:0然后在終端執行qt應用就可以。 xhost local: 功能:允許本地用戶(local:)訪問 X 服務器(X11 圖形系統)。 原理&#xf…

【AI驅動網絡】

一、AI 驅動網絡 1.1 什么是網絡 1.1.1、網絡的定義 ?網絡是由若干節點?(如計算機、服務器、移動設備等)和連接這些節點的鏈路?(有線或無線傳輸介質)構成的系統,用于實現地理位置分散的獨立設備之間的信息交換、資源共享與協同工作。在計算機領域,網絡是信息傳輸、…

Python期末速成

一.基礎內容 賦值語句: a 1 b "mayday" 標識符規則: 1.字母,數字,下劃線,漢字組成。但數字不能開頭 2.不能是保留字 3.特殊符號不行,*¥^等 注釋是在語句前面加# …

【時時三省】(C語言基礎)指針變量例子

山不在高,有仙則名。水不在深,有龍則靈。 ----CSDN 時時三省 存放地址的變量是指針變量,它用來指向另一個對象(如變量、數組、函數等)。 那么,怎樣定義和使用指針變量呢? 先分析一個例子。 例題 通過…

MATLAB代碼演示,TDOA定位的優化算法,提升Z軸的定位精度|復現《基于最小二乘法的室內三維定位算法研究》

本文復現文章: 王桂杰,焦良葆,曹雪虹.基于最小二乘法的室內三維定位算法研究[J].計算機技術與發展,2020,30(04):69-73.按照文章的核心算法,復現了TDOA下的最小二乘在三維環境中的改進定位方法,方法可以明顯提升Z軸的定位精度 文章目錄 概述運行結果展示matlab代碼完整代碼概…

React useState 原理

Fiber架構 React16 之后 提升顯示性能 電腦屏幕參數刷新率 表示1s刷新次數 頁面渲染 和 JS代碼執行 共享一個線程 互斥 保持上一幀圖像表現:卡頓 reconcilier改為 stack 和 fiber Fiber數據結構 執行單元 瀏覽器優先執行用戶響應相關或者界面渲染相關事件&#…

【Datawhale組隊學習202506】零基礎學爬蟲 01 初始爬蟲

系列文章目錄 01 初始爬蟲 02 數據解析與提取 文章目錄 系列文章目錄前言1 爬蟲和Python2 爬蟲的矛盾2.1 爬蟲與反爬2.2 robots核心字段重要規則說明非標準擴展指令協議生效條件局限性驗證工具 2.3 一個爬蟲demo 3 Web請求與HTTP協議3.1 一個web請求的全過程3.2 判斷頁面源代碼…

前端面試十之vuex

Vuex 是一個專為 Vue.js 應用程序設計的狀態管理模式和庫,它集中管理應用的所有組件的狀態,并以相應的規則保證狀態以一種可預測的方式發生變化。以下是關于 Vuex 的詳細介紹: 1. 核心概念 State(狀態) 它是 Vuex 中存…

Django中為api自定義一些裝飾器:如參數校驗等

在Django中使用了rest_framework時,一般我們會定義ModelSerializer來校驗request.data中參數是否存在和參數類型。 但當我們只是想簡單校驗一些api的url上是否存在某些參數時,該怎么辦?當然我們也可以通過定義Serializer來實現,但…

uni-app項目實戰筆記21--uniapp緩存的寫入和讀取

一、緩存的寫入 uni.setStorageSync("storageClassList",classifyList.value) 二、緩存的讀取,如果緩存不存在,則返回空數組 const storageClassList uni.getStorageSync("storageClassList") || []; 三、對讀取到的數據進行轉…

Zama密碼分析資助計劃

1. 引言 2025年5月,Zama團隊正式啟動了 Zama 密碼分析資助計劃(Cryptanalysis Grant Program),以支持那些致力于“破解”系統的研究人員: 無論是通過密碼分析、側信道攻擊、故障注入,還是其他創新性方法。…

【數據結構與算法】數據結構初階:詳解順序表和鏈表(一)

🔥個人主頁:艾莉絲努力練劍 ?專欄傳送門:《C語言》、《數據結構與算法》 🍉學習方向:C/C方向 ??人生格言:為天地立心,為生民立命,為往圣繼絕學,為萬世開太平 前言&am…

Arrays.asList() 的不可變陷阱:問題、原理與解決方案

🚨 Arrays.asList() 的不可變陷阱:問題、原理與解決方案 #Java集合 #開發陷阱 #源碼解析 #編程技巧 一、問題現象:無法修改的集合 當開發者使用 Arrays.asList() 轉換數組為集合時,嘗試添加/刪除元素會拋出異常: St…

uniapp對接融云IM即時通訊,語音消息無法播放

uniapp對接融云IM即時通訊,語音消息無法播放 問題背景解決方案1.本地音頻播放2.遠程音頻播放 問題背景 最近使用uniapp對接融云的即時通訊sdk,發送語音消息后,本地音頻(local)和遠程音頻(remote&#xff0…

【C++開發】CMake構建工具

目錄 1,CMake介紹 2,配置文件CMakeLists.txt 1,CMake介紹 CMake 是一個開源的、跨平臺的自動化構建系統生成工具,廣泛用于 C 和 C 項目的構建管理。它使用一個名為 CMakeLists.txt 的配置文件來定義如何構建項目,并能…

大模型MetaGPT面試題匯總及參考答案

目錄 MetaGPT 的核心目標與設計理念是什么? 它如何實現多角色協同(如 Planner、Coder、Reviewer、Tester)? 不同 agent 之間的通信機制是怎樣的? MetaGPT 是如何進行任務拆分與任務分配的? 它如何實現可執行的反饋循環(self-correcting)? 在實際項目中如何監控各…