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