Redis和database 双写 一致性问题

首先说下兜底方案:一般缓存都会设置失效时间,所以最终缓存和database肯定会一致的。

但是如果想在更新database的同时,提前更新下缓存,那么就存在各种方案了。可以参考如下的文章:

https://www.cnblogs.com/rjzheng/p/9041659.html

https://juejin.cn/post/6850418121754050567

https://cloud.tencent.com/developer/news/634004

业务中可以采用的简单方案:先更新database,再删除缓存(或者设置缓存的失效时间是5s更好,这样可以解决database的主从延迟问题)。

简单方案的基础上增加补偿:如果删除缓存(或者更新失效时间5s)失败,则将操作发送到消息队列中,然后进行消费,重写补充进行删除缓存(或者更新失效时间5s)。

原文地址:https://www.cnblogs.com/iamswf/p/14540532.html