Redis与MySQL双写一致性如何保证?

73 阅读1分钟

源自:Redis与MySQL双写一致性如何保证

1.强一致性

使用redission的读写锁保证双写一致性

读锁阻塞写不阻塞读

写锁阻塞读和写

写锁为什么会阻塞读写呢?

底层用的是setnx同一时间只能有一个线程拥有这把锁

2.弱一致性

canal异步通知(canal伪装成mysql从节点,当mysql数据发生变化时canal监听数据变化,更改redis数据)

异步通知保证数据最终一致性

延迟双删达到最终一致性,修改数据前删除缓存,修改完数据,给mq发送延迟消息(保证主从同步完成)再删一次缓存