MySQL和Redis的数据一致性
2023.8.23
1.可以考虑canalServer去拿mysql集群主节点的binlog,再去更新,这样代码层面、dba层面修改数据都可以同步
2023.8.24
1.延迟双删的问题模型
线程1准备清空redis,再更新db
T1时刻,缓存已清空,线程2做查询任务,此时发现没有Redis,就去更新了Redis,读取到的依旧是老数据
流程
删缓存->更db->起线程sleep一定时间,再次删缓存
2.双写一致性
两个线程同时想要修改db中的某行记录,然后更新Redis,竞争到行锁修改记录之后,怎么保证Redis缓存的更新顺序
思路是将更新db、更新Redis的操作原子化