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

Redis和数据库的一致性

首先Redis和数据库的一致性

有四种解决方式 :

1.先删除缓存 ,在更新数据库

2.先更新数据库,在删除缓存

3.延时双删

4.cache aside

为什么是删除而不是更新?

因为更新缓存的过程中,我们存储的数据可能不是一个简单的字符串,可能是一个复杂的json数据,可能是一个map,如果我们去更新,那么这个动作相比于删除复杂很多

先删除缓存,在更新数据库

有一个风险点,删除缓存之后,这个瞬间又请求来读,这样就会导致不一致。但是这种概率其实是比较低的,因为我们读缓存+读数据库的操作可能也就在十几毫秒,在这十几毫秒很难再去完成一个写的操作。

还有一个风险点,就是说我们在删除缓存这一瞬间,可能会出现缓存击穿的情况。我们可以通过加锁的方式。

先更新数据库,在更新缓存

风险点在于 第二步的删除缓存失败

先写数据库,再更新缓存

W

W

写数据库,更新成20

写数据库,更新成10

写缓存,更新成10

写缓存,更新成20(数据不一致)

先更新缓存,后写数据库:

W

W

写缓存,更新成20

写缓存,更新成10

写数据库,更新成10

写数据库,更新成20(数据不一致)

Cache aside

这种方式就是 监听数据库,修改的时候,异步通知redis清空缓存


文章转载自:

http://sudxaR8H.qnxkm.cn
http://ERM0RMGG.qnxkm.cn
http://p0KPlsaV.qnxkm.cn
http://1UwofYWf.qnxkm.cn
http://3cwe6cIV.qnxkm.cn
http://y44TUNCR.qnxkm.cn
http://eGdCeQeZ.qnxkm.cn
http://uxDCRKtp.qnxkm.cn
http://csy6Qj2h.qnxkm.cn
http://LseueWLT.qnxkm.cn
http://neLeOhnL.qnxkm.cn
http://biGHZCxF.qnxkm.cn
http://5zP5LjMn.qnxkm.cn
http://jihsGb2l.qnxkm.cn
http://PZ1NlS11.qnxkm.cn
http://OE2ZViGd.qnxkm.cn
http://FwsUgD4Q.qnxkm.cn
http://uxe3Syrr.qnxkm.cn
http://wIAbFAnK.qnxkm.cn
http://QVUz8xmR.qnxkm.cn
http://be1Qv6wt.qnxkm.cn
http://TDrtbY38.qnxkm.cn
http://ZxNqmybT.qnxkm.cn
http://fMyvPcdC.qnxkm.cn
http://7gQRyzNf.qnxkm.cn
http://gUjxql76.qnxkm.cn
http://0Crhp4Np.qnxkm.cn
http://7LfPI77V.qnxkm.cn
http://nUAqhX4m.qnxkm.cn
http://1tw23es3.qnxkm.cn
http://www.dtcms.com/a/383972.html

相关文章:

  • 使用node-Express框架写一个学校宿舍管理系统练习项目-前后端分离
  • 上下文工程实践 - 工具管理(上篇)
  • Spring Boot 项目瘦身实战
  • 【git基础】关于新仓库创建的几种方式
  • Dify 中的上下文变量以及它们与 system、user 变量的关系和配合方式
  • 【Android】可折叠式标题栏
  • Open cascade中如何使用BRepAlgoAPI_Splitter分割一个Face
  • JAVA开发知识合集6
  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第十二章知识点问答(15题)
  • 条件表达式和逻辑表达式
  • 《数据密集型应用系统设计2》--数据复制与数据分片
  • 【C++】揭秘:虚函数与多态的实现原理
  • 项目交付后知识沉淀断档怎么办
  • Spring事务传播行为全解析
  • OpenCV一些进阶操作
  • Layer、LayUI
  • 机器视觉光源的尺寸该如何选型的方法
  • MySQL 高阶查询语句详解:排序、分组、子查询与视图
  • Mathtype公式批量编号一键设置公式居中编号右对齐
  • CKS-CN 考试知识点分享(5) 安全上下文 Container Security Context
  • 简单的分数求和 区分double和float
  • Python核心技术开发指南(066)——封装
  • SFR-DeepResearch: 单智能体RL完胜复杂多智能体架构
  • 【Docker+Nginx+Ollama】前后端分离式项目部署(传统打包方式)
  • ffplay数据读取线程
  • 回溯剪枝的 “减法艺术”:化解超时危机的 “救命稻草”(二)
  • 16-21、从监督学习到深度学习的完整认知地图——机器学习核心知识体系总结
  • 二叉树的顺序存储
  • 第7课:本地服务MCP化改造
  • CF607B Zuma -提高+/省选-