Redis缓存数据不一致和并发竞争怎么处理?
数据不一致
问题描述:
cache中数据与DB数据不一致
业务场景:
1、cache机带宽打满/网络波动,更新cache失败
2、缓存rehash,节点异常,多次上下线
解决方案:
方案1:cache更新失败后,重试or延迟删除
方案2:调短过期时间,DB重新加载,最终一致性
方案3:拒绝rehash飘逸,采用缓存分层策略
并发竞争
问题描述:
高并发访问场景,缓存miss,并发到DB查相同key
业务场景:
1、某车次缓存信息过期,仍有大量用户同时查询该车次信息
解决方案:
方案1:缓存miss后,加全局锁,唯一进程查DB,并会写;其它进程查询,若缓存miss,先查是否被锁定,发现有锁则等待;等加锁进程回写完毕后,从缓存加载。
方案2:缓存数据保持多个备份,减少miss的概率
下一篇:
讲解MySQL最详细的一步一步安装教程