系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 系列文章目录
- 前言
- 一、面试题
- 二、缓存双写一致性,谈谈你的理解
- 1、redis中有无数据
- 2、缓存按照操作来分,细分两种
- a、读写缓存
- 3、一图搞定代码
- a、普通进行双写的代码
- b、采用`双检加锁`策略 双重检测加锁
- 三、数据库与缓存一致性的几种更新策略
- 1、可以停机的情况
- 2、4种更新策略
- a、X 先更新数据库,再更新缓存
- b、X 先更新缓存,再更新数据库
- c、X 先删除缓存,再更新数据库
- 问题
- 解决方案
- d、先更新数据库,再删除缓存
- 异常问题
- `解决方案`
- 3、小总结
- 如何选择方案?利弊如何 建议第四种
- 一图总结
前言
一、面试题
二、缓存双写一致性,谈谈你的理解
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、先更新数据库,再删除缓存
异常问题
解决方案
加入消息队列
细节: