寂寞蚂蚁

文章
4
资源
0
加入时间
3年0月20天

如何redis和数据库之间的一致性?

1、不一致产生的原因?我们在是使用redis过程中,通常会这样做,先读取缓存,如果缓存不存在,则读取数据库。不管是先写库,再删除缓存;还是先删除缓存,再写库,都有可能出现数据不一致的情况。因为写和读是并发的,没法保证顺序,如果删除了缓存,还没有来得及写库,另一个线程就来读取,发现缓存为空,则去数据库中读取数据写入缓存,此时缓存中为脏数据。如果先写了库,在删除缓存前,写库的线程宕机了,没有删除掉缓存,则也会出现数据不一致情况。如果是redis集群,或者主从模式,写主读从,由于redis复制存在一定