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的概率

经验分享 程序员 微信小程序 职场和发展