缓存策略及一致性保障方案
2023-10-22 14:24:18 1 举报
AI智能生成
缓存策略及一致性保障方案
作者其他创作
大纲/内容
过期时间、策略
穿透
不存在的数据
设置为null
浪费空间
和db数据不一致
布隆过滤器
误判率
无法删除元素
击穿
热点数据
永不过期+ 定时任务
设置过期+ 定时任务 定时更新缓存时间
雪崩
大量过期
打散
策略
cache Aside
是什么
读
先读,缓存没有则查DB,然后有数据就更新到缓存
写
先写DB,然后更新/删除缓存
为什么要这样
对比 更新还是删除好
性能:如果需要复杂计算才更新缓存,那直接删除可以减少不必要的计算。(因为有冷数据)
安全:更新容易带来不一致。在AB都更新DB,结果BA更新缓存场景
能不能先删缓存
不行,A是写操作,结果A删了缓存还没更新时,B查来了,在A还没更新完的时候,先查DB把旧值缓存起来了
一致性分析
适用场景
大部分场景,对缓存的一致性要求一般,不是非常高的时候。
补偿方案
缓存重试
缓存时间
重试队列
数据变更,由定时任务定时将新更新的同步到缓存
延时双删
结合Read/ write Through
Read Through
是什么
读
读控制层,读没有就返回。由控制层进行如果没有,则取查库然后返回到缓存等。
write Thorugh
是什么
写
先访问控制层,由控制层进行更新DB 和缓存。放在事务里。
使用场景
写比较多,对一致性要求比较高的
补偿方案
加锁
锁的超时时间
队列
请求暂存在消息队列中顺序消费。
writh Behind
异步回写
数据库里 innodb是这么做的
是什么
适用场景 /写多
电商秒杀场景中库存的扣减
但需要做缓存的高可用
写请求延迟较低,减轻了数据库的压力,具有较好的吞吐性
一致性较弱
实际案例
cache Aside (更新缓存) + 重试+ 定时任务校验/更新缓存 + 永久缓存(高并发 防止缓存雪崩)
0 条评论
下一页