【redis】缓存双写一致性之更新策略探讨(上)

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

在这里插入图片描述


一、面试题

在这里插入图片描述

二、缓存双写一致性,谈谈你的理解

在这里插入图片描述

1、redis中有无数据

在这里插入图片描述

2、缓存按照操作来分,细分两种

只读缓存 和 读写缓存

a、读写缓存

同步直写策略在这里插入图片描述

异步直写策略在这里插入图片描述

3、一图搞定代码

a、普通进行双写的代码

在这里插入图片描述
低并发可以使用 (QPS<1000)但是遇到高并发时,第2和3步不是原子的,会造成写入覆盖
在这里插入图片描述

b、采用双检加锁策略 双重检测加锁

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


三、数据库与缓存一致性的几种更新策略

在这里插入图片描述
在这里插入图片描述

1、可以停机的情况

在这里插入图片描述

2、4种更新策略

在这里插入图片描述

a、X 先更新数据库,再更新缓存

异常问题1在这里插入图片描述

异常问题2在这里插入图片描述

b、X 先更新缓存,再更新数据库

不推荐,业务上一般把数据库作为底单数据库,保证最后解释
在这里插入图片描述

c、X 先删除缓存,再更新数据库

问题

在这里插入图片描述
步骤1 A先删除缓存,但未及时回写,此时B来读取缓存
在这里插入图片描述

步骤2 B没有得到缓存,就去数据库,得到旧值并回写
在这里插入图片描述

步骤3 A更新完成 但B已经回写了旧值,此时产生数据不一致情况在这里插入图片描述
梳理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解决方案

在这里插入图片描述

休眠多久?
在这里插入图片描述
休眠导致吞吐量降低怎么办?
在这里插入图片描述
看门狗WatchDog

d、先更新数据库,再删除缓存

异常问题

在这里插入图片描述
在这里插入图片描述

解决方案

加入消息队列
在这里插入图片描述
细节:在这里插入图片描述

在这里插入图片描述

3、小总结

如何选择方案?利弊如何 建议第四种

在这里插入图片描述

一图总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值