当前位置: 首页 > news >正文

【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

相关文章:

  • ICML 2025 | 时空数据(Spatial-Temporal)论文总结
  • React中的useEffect详解
  • Ollama按照与使用
  • Cursor快速上手+科学使用指南
  • 【webSocket】WebSocket全双工通信实战指南
  • 跨域视角下强化学习重塑大模型推理:GURU框架与多领域推理新突破
  • 《福格行为模型》
  • JMeter API 并发性能测试计划JMX文件解析
  • wx小程序登录设置角色
  • AI产品经理的定义边界与价值重构
  • 《单光子成像》第八章 预习2025.6.22
  • C++,Qt事件处理机制编程开发练习全解析,23000字解析!!
  • 【工具教程】PDF指定区域OCR识别重命名工具使用教程和注意事项
  • 【数据结构试题】
  • 媒体AI关键技术研究
  • 详解分布式事务框架DTM:子事务屏障
  • Flink源码阅读环境准备全攻略:搭建高效探索的基石
  • 微处理器原理与应用篇---常见基础知识(1)
  • AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月22日第116弹
  • 统计用户本月的连续登录天数
  • 手机端网站 优帮云/app代理推广平台
  • 职业病院网站建设/小程序开发模板
  • 山东企业网络推广软件系统/优化推广网站淄博
  • 网站展示怎么做/seo优化网络公司排名
  • 山东青岛网站建设公司排名/西安百度推广开户
  • 在哪人网站要以接it项目做/谷歌seo查询