通常在更新数据库的时候,我们需要保证缓存中数据一致,例如redis,
我们可以选择先执行修改操作,再删除缓存,或者先删除缓存,再执行update操作
但是有可能会出现一些问题,比如先执行了修改操作以后,此时由于网络卡顿等原因还没有写入缓存,但是已经读了,这时读的数据还是旧数据,那就会出现数据不一致的问题
可以采用延迟双删的策略
请求a先将缓存删除还没来的及写数据库,请求b来读取数据,发现缓存中没有数据,到数据库中查询,在数据库中查到旧数据并加到缓存中,此时请求a执行update操作,等待一段时间后,请求a再将缓存删除。
为什么要等一段时间,
因为要确保请求b查完数据加到缓存中,删的是b查询的数据,是旧数据,这样旧数据彻底没有了,
才保证了双写一致性。