【Redis】多级缓存之缓存数据同步策略与Canal

这篇具有很好参考价值的文章主要介绍了【Redis】多级缓存之缓存数据同步策略与Canal。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、数据同步策略

1.设置有效期

2.同步双写

3.异步通知

二、Canal

三、监听Canal


一、数据同步策略

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

1.设置有效期

给缓存设置有效期,到期后自动删除。再次查询时更新,他简单、方便,但是时效性差,缓存过期之前可能不一致,适用于更新频率较低,时效性要求低的业务

2.同步双写

在修改数据库的同时修改缓存,他时效性强,缓存与数据库一致性强但是有代码侵入,耦合度高,适用于对一致性、时效性要求较高的缓存任务

3.异步通知

修改数据库时发送事件通知,,相关的服务监听到后修改缓存数据,这种方式耦合度低,可同时通知多个缓存服务,但是时效性一般,存在中间不一致状态,适用于时效性要求一般,有多个服务需要同步

二、Canal

Canal是阿里巴巴旗下的一款开源的项目,基于Java开发,他基于数据库增量日志的解析,提供增量数据的订阅与消费。Canal是基于MySQL的主从同步实现的,MySQL的主从同步原理如下:主节点会将变更的数据写入二进制日志文件,而从节点会将主节点的二进制日志文件拷贝到他的中继日志,然后重放日志里的事件将数据的变更进行同步,Canal就是将之间伪装成一个MySQL的从节点,从而监听主节点日志的变化,再将变更的信息通知给客户端,完成数据同步

【Redis】多级缓存之缓存数据同步策略与Canal

 文章来源地址https://www.toymoban.com/news/detail-511073.html

三、监听Canal

Canal支持多种语言的客户端,当Canal监听到binlog变化时,会通知Canal的客户端。我们这里使用Github开源的canal-starter

首先我们需要引入依赖

<dependency>
    <groupId>top.javatool</groupId>
    <artifactId>canal-spring-boot-starter</artifactId>
    <version>1.2.1-RELEASE</version>
</dependency>

然后在配置文件中进行配置

canal:

        destination:canal实例的名称

        server:canal的地址 

最后在代码中编写监听器,监听Canal消息 

@CanalTable("监听的数据库表名")
@Component
public class Handler implements EntryHandler<数据库表对应的实体类>{
    // 重写 insert、update、delete方法,在这三个方法里写更新缓存的操作
}

在Canal中推送给客户端的是被修改的这一行的数据,我们的Java客户端的监听器会将这一行数据封装为对应的Java对象,但是在这个过程中我们需要直到实体类与数据库字段的映射关系,这就需要我们在实体类中加对应的注解

@Id 用于标明表中的id字段

@Column(name="数据库字段名")用于表面这个成员变量对应数据中的哪一个字段

@Transient 用于表明这个成员变量不是表中的字段

 

到了这里,关于【Redis】多级缓存之缓存数据同步策略与Canal的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker filebeat 将日志多级目录和多维json数据日志同步到es

    使用的时候先调试调试配置,调试成功在尝试写入es,如果es写入失败就是es账户.密码/白名单.和index未创建的问题,细节可以留言 setup.template.priority 模板优先级 调整这个可以配置一台机器多个filebeat 容器启动 多级目录日志和多维josn日志结构 以docker形式启动filebeat filebeat 配置 

    2024年01月17日
    浏览(35)
  • 多级缓存架构(五)缓存同步

    通过本文章,可以完成多级缓存架构中的缓存同步。 1. mysql添加canal用户 连接在上一次 multiCache 项目中运行的 mysql 容器,创建 canal 用户。 2. mysql配置文件 在 docker/mysql/conf/my.cnf 添加如下配置 3. canal配置文件 添加 canal 服务块到 docker-compose.yml ,如下 任意启动一个 canal-server 容

    2024年01月16日
    浏览(57)
  • 【Redis】多级缓存(nginx缓存、redis缓存及tomcat缓存)

    传统的缓存策略一般是请求到达 tomcat 后,先查询redis,如果未命中则查询数据库。这种方式存在以下两个问题: 请求要经过 tomcat 处理, tomcat 的性能成为整个系统的瓶颈。 redis缓存失效时,会对数据库产生冲击。 多级缓存 就是充分利用请求处理的每个环节,分别添加缓存

    2023年04月21日
    浏览(46)
  • 多级缓存架构(四)Redis缓存

    通过本文章,可以完成多级缓存架构中的Redis缓存。 在 docker/docker-compose.ym l中,添加redis服务块 在 spirngboot 项目启动时,将固定的热点数据提前加载到 redis 中。 1. 引入依赖 pom.xml 添加如下依赖 application.yml 添加如下配置 2. handler类实现 新建 config.RedisHandler 类,内容如下,主要

    2024年01月22日
    浏览(40)
  • Redis高级篇 - 多级缓存

    传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,如图: 存在下面的问题: 请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈 Redis缓存失效时,会对数据库产生冲击 多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻Tomcat压

    2024年02月08日
    浏览(42)
  • Redis多级缓存

    传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,会存在以下问题: 请求需要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈。 Redis缓存失效时,会对数据库产生冲击。 而多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻Tomca

    2024年02月15日
    浏览(59)
  • 多级缓存(nginx本地缓存、JVM进程缓存、redis缓存)

    Caffeine示例 封装完函数之后,我们对nginx.conf进行修改(请求进来之后会去寻找item.lua) item.lua文件内容 上面的item.lua文件中需要进行拼接数据,我们需要JSON结果处理 在实际生产中tomcat是肯定以集群的方式存在 当我们修改nginx.conf发送请求为集群的时候,如下图 这个时候存在

    2024年01月17日
    浏览(56)
  • Redis学习(三)分布式缓存、多级缓存、Redis实战经验、Redis底层原理

    单节点Redis存在着: 数据丢失问题:单节点宕机,数据就丢失了。 并发能力和存储能力问题:单节点能够满足的并发量、能够存储的数据量有限。 故障恢复问题:如果Redis宕机,服务不可用,需要一种自动的故障恢复手段。 RDB持久化 RDB(Redis database backup file,Redis数据库备份

    2024年02月16日
    浏览(42)
  • mysql使用redis+canal实现缓存一致性

    目录 一、开启binlog日志 1.首先查看是否开启了binlog 2、开启binlog日志,并重启mysql服务 二、授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限 三、下载配置canal 1、下载 canal, 访问 release 页面 , 选择需要的包下载, 如以 1.0.17 版本为例 2、 修改confexample文件夹下instance.propert

    2024年02月13日
    浏览(54)
  • Redis缓存读写策略(三种)数据结构(5+3)

    Cache Aside Pattern 是我们平时使用比较多的一个缓存读写模式,比较适合读请求比较多的场景。 写 : 先更新 db 然后直接删除 cache 。 读  : 从 cache 中读取数据,读取到就直接返回 cache 中读取不到的话,就从 db 中读取数据返回 再把数据放到 cache 中。 在写数据的过程中,可以先

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包