Java教程

如何保证缓存和数据库的双写的一致性

本文主要是介绍如何保证缓存和数据库的双写的一致性,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

最初级的缓存不一致问题以及解决方案

问题: 先修改数据库,再删除缓存,如果删除缓存失败了,那么会导致数据库中是新数据,缓存中是旧数据,数据出现不一致

解决思路:

先删除缓存:再修改数据库,如果删除缓存成功了,如果修改数据库失败了,那么数据库中是旧数据,缓存中是空的,那么数据不会不一致因为读的时候缓存没有,则读数据库中旧数据,然后更新到缓存中。

比较复杂的数据不一致问题分析

数据发生了变更,先删除了缓存,然后要去修改数据库,此时还没修改,一个请求过来,去读缓存,发现缓存空了,去查询数据库,查到了修改钱的旧数据,放到了缓存中
数据变更的程序完成了数据库修改
完了,数据库和缓存中的数据不一样了。。。

解决方案:把写请求和读请求都放到本地队列中,开一个线程去执行,读请求每隔200ms去循环获取redis数据。

这篇关于如何保证缓存和数据库的双写的一致性的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!