一般来说,redis用作mysql的缓存,请求先访问redis,如果没有再访问数据库,数据库将请求的数据写入缓存。
但是当增删改操作时如何保证数据一致性,先更新缓存还是先更新mysql?
不管是先删缓存再更新数据库,还是先更新数据库再删缓存都会出现数据不一致问题
1.如果删除了缓存Redis,还没有来得及写库MySQL,另一个线程就来读取,发现缓存为空,则去数据库中读取数据写入缓存,此时缓存中为脏数据。2.如果先写了库,在删除缓存前,写库的线程宕机了,没有删除掉缓存,则也会出现数据不一致情况。
两种解决办法:
参考博客