针对这个问题,其实反过来更好理解,即“先删除缓存还是先修改数据库能保证数据一致”变为“数据不一致的条件是什么”,好,现在就经过第一步转换了,接下来就解决这个问题。
数据不一致其实就是在经过缓存删除和数据库修改变化后缓存中是旧数据,数据库是新数据。更新线程有两操作1.删除缓存,2.修改数据库。查找线程也有两个操作1.读取数据库数据,2.写入缓存。要想实现变化后缓存中是旧数据有两个条件1.读取数据库数据必须在修改前才能读到旧数据,2.写入缓存必须在删除缓存后写入才能保证写入旧数据不被删除。
接下来看如下图(从上到下是时间线)
可以看到如果左边要满足数据不一致情况的话读数据库、写缓存必须经过更新数据库和删除缓存时间跨度,而更新数据库时间是远大于写入缓存的时间的,所以左边不容易发送数据不一致情况。右边因为发生数据不一致情况不用经过更新数据库时间跨度,所以发生数据不一致概率很大,所以采用左边的方案好。
标签:缓存,删除,数据库,写入,一致,数据 From: https://blog.csdn.net/2301_76840501/article/details/140835246