MySQL和Redis数据一致性问题

背景

  在高并发的业务场景下,数据库的性能瓶颈往往是用户并发访问过大造成的,所以会有个Redis做个缓冲。

case

  一、A写,B读,

    写:1.淘汰cache 2.写操作(由于各种原因消耗了1s) 3.更新cache

    读:1.读cache 2.读DB 3更新cache

    在成功写入之前就读取了,会导致读取到脏数据,cache不是最新的数据

  二、主从分离

    同理,在有主从延迟这个过程中,会让读操作读取到脏数据

解决:

  1. 淘汰机制,每次写入一个数据后,隔几秒去淘汰一次缓存

  2.binlog,Redis根据binlog中的记录对Redis进行更新

猜你喜欢

转载自www.cnblogs.com/xingkongyihao/p/12676825.html