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)。

posted @ 2021-03-15 22:39  iamswf  阅读(57)  评论(0编辑  收藏  举报