微服务框架 SpringCloud微服务架构 多级缓存 49 缓存同步 49.1 数据同步策略

本文详细探讨了SpringCloud微服务环境下如何通过多级缓存、有效期策略、同步双写、异步通知(包括基于Canal的MySQL变化监听)来解决数据一致性问题。重点讲解了不同缓存同步方法的优缺点及适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微服务框架

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】

多级缓存

49 缓存同步

49.1 数据同步策略
49.1.1 缓存同步策略

OK,前面我们已经基本实现 了一个多级缓存架构,大大提高了 “查询商品的性能”

【但是】缓存在提高性能的同时,也带来了一致性的问题,比如说数据库发生 了修改

这个时候如果缓存还是旧的数据,那么就导致了 数据不一致的问题

【如何保证数据库 与 缓存数据的一致性? 】【缓存同步问题】

缓存数据同步的常见方式有三种:

  • 设置有效期:给缓存设置有效期,到期后自动删除。再次查询时更新【被动的缓存同步】【其实就相当于并没有做同步,只是到期了而已,下次再查的时候才能更新】

    • 优势:简单、方便
    • 缺点:时效性差,缓存过期之前可能不一致
    • 场景:更新频率较低,时效性要求低的业务
  • 同步双写:在修改数据库的同时,直接修改缓存

    • 优势:时效性强,缓存与数据库强一致
    • 缺点:有代码侵入,耦合度高;
    • 场景:对一致性、时效性要求较高的缓存数据
  • **异步通知:**修改数据库时发送事件通知,相关服务监听到通知后修改缓存数据【通知到位就行了】

    • 优势:低耦合,可以同时通知多个缓存服务
    • 缺点:时效性一般,可能存在中间不一致状态
    • 场景:时效性要求一般,有多个服务需要同步

【基于MQ 的异步通知】

在这里插入图片描述

修改了商品信息,写入数据库后,发一个通知,业务就算结束了【但是还是需要在代码上面去做修改】

【今天要学的】 【基于Canal 的异步通知】

在这里插入图片描述

canal 可以直接监听MySQL 数据库的变化【代码 0 侵入】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祝我天天开心,平安健康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值