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进行更新

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM