Canal解决缓存一致性问题

Canal解决缓存一致性问题


问题描述:

姚老师直播没能提问题,跑到这里提了哈。

我的问题是DB怎么保证同步数据给redis会一定成功,因为失败了话,应用层读缓存岂不是读到旧的数据,然后还是造成缓存和DB数据不一致了。所以DB同步到redis有怎么保障措施吗

相关截图:

https://img1.sycdn.imooc.com//climg/61580b20096ef0da30991534.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
姚半仙 2021-10-04 23:08:12

canal其实就是利用了mysql自身的同步机制,应用程序消费db变更并将数据写入到redis的过程,可以做成mq监听触发,处理失败requeue重试,并不是100%一致的方案

另外,只要用了缓存就要有这么一个意识,那就是缓存的业务本身就允许不一致行的存在,对于强一致性的场景不要考虑从缓存做读写

  • 提问者 萨思给 #1

    那引入canal的好处是啥呢

    2021-10-04 23:39:52
  • 姚半仙 回复 提问者 萨思给 #2

    做数据异构,否则mysql自己的同步机制只能同步数据到其他mysql节点,没法做异构

    2021-10-13 23:36:39
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师