Redis和MySQL保证数据一致

32 阅读1分钟

1、先更新MySQL,再更新Redis,如果更新Redis失败,可能数据不一致

2、先删除Redis缓存数据,再更新MySQL,再次查询的时候再将数据添加到缓存中,这种方案能解决1方案的问题,但是在高并发下性能较低,而且仍然会出现数据不一致的问题,比如线程1删除了Redis缓存数据,正在更新MySQL,此时另外一个线程查询再查询,那么就会把MySQL中老数据有查到Redis中

3、延时双删,步骤是:先删除Redis缓存数据,在更新MySQL,延迟几百毫秒再删除Redis缓存数据,这样就算在更新MySQL时,有其他线程读取了MySQL,把老数据读到了MySQL,把老数据读到了Redis中,那么也会删除掉,从而把数据保存一致性。