缓存中间件实践 - 缓存和数据库一致性更新原则
2022-09-21 本文已影响0人
右耳菌
1. 缓存和数据库一致性更新是什么?
1.1 缓存和数据库的关系
介绍
- 缓存:高性能产品
- 数据库:性能低产品
- 缓存+数据库 = 高效的数据存储产品组合
- 缓存+数据库业务提供了什么?
1.提供了性能的提升((更好的存储介质,更贴近请求的存储距离
2.提供了简便的数据抽象
1.2 缓存和数据库一致性更新本质是什么?
保证用户访问缓存和数据库中的数据是一样的!
2. 为什么需要一致性更新?
2.1 库存系统一致性 - 例子1
3. 缓存和数据库一致性更新原则
3.1 常见的缓存访问模式
- Cache-Aside (本地缓存)
当客户端有很多的时候,该模式效率会很低。
- Cache-Aside(缓存中间件 - 第一种)
- Cache-Aside(缓存中间件 - 第二种)
3.2 常见的缓存访问模式(读取)
- Cache-Aside (缓存读取)
3.3 常见的缓存访问模式(更新模式)
- 先更新缓存,再更新数据库
但是可能存在更新数据库失败的问题
或下面的情况
- 先更新数据库,再更新缓存
但是也可能发生缓存更新失败的问题
或下面的情况
- 先删除缓存,再更新数据库
但是也会有下面的情况出现
- 先更新数据库,再删除缓存
但是无法立即将新数据返回给其他的访问请求,或者说后续缓存删除失败等等
或下面的情况
总结
- 更新,不删除
a.先更新缓存,在更新数据库
b.先更新数据库,在更新缓存 - 需要删除
a.先删除缓存,在更新数据库
b.先更新数据库,在删除缓存
3.4 常见缓存访问模式(Through)
- 缓存和数据库库交互 - Read Through
- 缓存和数据库库交互 - Write Through
- 缓存和数据库库交互 - Write Behind
3.5 一致性更新目标
-
最终一致性 - 过期时间(TTL)
1.最终一致性:过期了会取数据库最新值
2.剔除冷的缓存,节省缓存空间,提升效率 -
最终一致性 - 异步更新
- 最终一致性 - 重试机制
- 强一致性
如果觉得有收获,欢迎点赞和评论,更多知识,请点击关注查看我的主页信息哦~