【Redis】缓存同步

news2024/12/23 20:35:23

【Redis】缓存同步

文章目录

  • 【Redis】缓存同步
    • 1. 数据同步策略
    • 2. 异步通知策略
    • 3. Canal
      • 3.1 Canal客户端
      • 3.2 监听器

1. 数据同步策略

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

  1. 设置有效期:给缓存设置有效期,到期后自动删除,再次查询时更新。
    • 优势:简单方便
    • 缺点:时效性差,缓存过期之前可能不一致
    • 场景:更新频率较低,时效性要求低的业务
  2. 同步双写:在修改数据库的同时,直接修改缓存。
    • 优势:时效性强,缓存与数据库强一致
    • 缺点:有代码侵入,耦合度高
    • 场景:对一致性、时效性要求较高的缓存数据
  3. 异步通知:修改数据库时发送事件通知,相关服务监听到通知后修改缓存数据。
    • 优势:低耦合,可以同时通知多个缓存服务
    • 缺点:时效性一般,可能存在中间不一致状态
    • 场景:时效性要求一般,有多个服务需要同步

2. 异步通知策略

基于 MQ 的异步通知:

image-20230423222839596

基于 Canal 的异步通知:

image-20230423222935558


3. Canal

Canal ,译意为水道/管道/沟渠,canal是阿里巴巴旗下的一款开源项目,基于Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。GitHub的地址:https://github.com/alibaba/canal

Canal是基于MySQL的主从同步来实现的:

  • MySQL master 将数据变更写入二进制日志( binary log),其中记录的数据叫做binary log events
  • MySQL slave 将 master 的 binary log events拷贝到它的中继日志(relay log)
  • MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据

image-20230423223252342

Canal 就是将自己伪装成mysql的一个slave节点,从而监听 master 的binary log 变化。再把得到的变化信息通知给Canal的客户端,进而完成对其他数据库的同步。

image-20230423223415686


3.1 Canal客户端

Canal提供了各种语言的客户端,当Canal监听到binlog变化时,会通知Canal的客户端。

image-20230423223532863

Canal提供了各种语言的客户端,当Canal监听到binlog变化时,会通知Canal的客户端。不过这里我们会使用GitHub上的第三方开源的canal-starter。地址:https://github.com/NormanGyllenhaal/canal-client

引入依赖:

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

yml配置:

canal:
  destination: heima # canal实例名称,要跟canal-server运行时设置的destination一致
  server: 192.168.101.65:11111 # canal地址 

3.2 监听器

编写监听器,监听Canal消息:

@CanalTable("tb_item") //要监听的表 
@Component
public class ItemHandler implements EntryHandler<Item> {

    @Override
    public void insert(Item item) {
        //写数据到jvm进程缓存
        //写数据到redis
    }

    @Override
    public void update(Item before, Item after) {
        //写数据到jvm进程缓存
        //写数据到redis
    }

    @Override
    public void delete(Item item) {
        //删除jvm进程缓存
        //删除redis缓存
    }
}

Canal推送给canal-client的是被修改的这一行数据(row),而我们引入的canal-client则会帮我们把行数据封装到Item实体类中。

这个过程中需要知道数据库与实体的映射关系,要用到JPA的几个注解:

image-20230423231449186

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/456132.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络系统集成实验(四)| 系统集成路由器基本配置

目录 一、前言 二、实验目的 三、实验需求 四、实验步骤与现象 &#xff08;一&#xff09;静态路由 Step1&#xff1a;构建实验拓扑如下 Step2&#xff1a;IP地址配置如下 Step3&#xff1a;配置静态路由 Step4&#xff1a;验证 &#xff08;二&#xff09;NAT配置—…

OpenPCDet复现过程记录

0、前言 OpenPCDet项目之前我就复现过&#xff0c;一个很优秀的项目&#xff0c;这几天又需要用到这个项目&#xff0c;再次复现遇到了不少问题&#xff0c;特此记录复现的流程 1、环境准备 1.1、前置条件 以下是我安装的版本 CUDA 11.3CUDNN 8.2.1 CUDA和CUDNN安装可以参考…

Yolo v1 笔记

个人不太懂的点 1.损失函数的4与5项 【论文解读】Yolo三部曲解读——Yolov1 - 知乎 https://www.youtube.com/watch?vNkFENlEb4kM&t672s 训练阶段&#xff1a; C_i 预测值&#xff1a;由网络输出出来7*7*30中第一个bbox和第二个bbox的置信度confidence C_i^hat 标签值…

(六)大数据实战——hadoop集群实现免密登录和文件互传

前言 本节内容我们主要介绍一下hadoop集群服务器之间实现免密登录和文件互传的功能&#xff0c;这样更加方便我们使用hadoop服务器实现服务器之间的相互登录和文件的相互传输。集群之间的访问不在需要授权就可以实现相互访问。 正文 SSH免密登录 ①分别在hadoop101、hadoop1…

后台管理系统之登录方案记录

需求&#xff1a;根据当前环境的不同&#xff0c;请求不同的 BaseUrl 解决&#xff1a;在根目录中新建.env.development与.env.production连个文件&#xff0c;进行配置&#xff1a; # .env.production ENV production# base api VUE_APP_BASE_API /prod-api# .env.develop…

目标检测——YOLOv8(十四)

简介&#xff1a; YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本&#xff0c;目前支持图像分类、物体检测和实例分割任务。不过 ultralytics 并没有直接将开源库命名为 YOLOv8&#xff0c;而是直接使用 ultralytics 这个词&#xff0c;原…

nodejs+vue 学分置换管理系统

在大学四年参加了各类竞赛后&#xff0c;我发现参加各类比赛存在报名过程过于繁琐&#xff0c;评比过程不透明和易出错等问题&#xff0c;所以在定题时与老师商讨后确定设计和实现基于nodejs的高校竞赛信息发布系统&#xff0c;帮助老师发布竞赛内容&#xff0c;便于同学们线上…

24考研数学每日一题(带解析)2023年12月1日-2023年12月31日

title: 24考研数学每日一题Latex版&#xff08;带解析&#xff09; date: 2023-01-28 11:49:26 plugins: mathjax tags:学习考研 categories:考研数学 题目来源于武老师的每日一题&#xff0c;答案是自己做的&#xff0c;不太严谨&#xff0c;仅供参考 2022年12月1日 知识点…

区块浏览器Tokenview受邀参加2023香港Web3嘉年华,用科技与善良打造全球区块浏览器Web3生态

区块浏览器Tokenview受邀参加2023香港Web3嘉年华,用科技与善良打造全球区块浏览器Web3生态 4月12-15日&#xff0c;由万向区块链实验室、HashKey Group 联合举办、W3ME 承办的「2023 香港 Web3 嘉年华」在香港会议展览中心举行。该活动被称为香港有史以来规模最大的加密领域活…

无人机飞行控制实验平台

无人机在研制过程中需要不断地进行飞行测试&#xff0c;而测试的过程不是万无一失的&#xff0c;飞行过程中发生任何错误都有可能会导致无人机的损毁或破坏&#xff0c;更严重地甚至会造成外界伤害。 基于此我们推出了无人机的三旋转自由度 (3-DOF) 飞行平台测试系统&#xff…

学成在线笔记+踩坑(4)——【媒资管理模块】上传图片,Nacos+Gateway+MinIO

导航&#xff1a; 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线牛客面试题 目录 1. 媒资管理模块简介 1.1 模块介绍 1.2 业务流程 1.2.1 上传课程图片 1.2.2 上传视频 1.2.3 处理视频 1.2.4 审核媒资 1.2.5 绑定媒…

龙讯旷腾材料计算大赛启动,打怪升级赢大奖

龙讯旷腾2023计算大赛第一期电催化计算大赛启动 选拔赛截止日期5月21日 决赛截止日期5月28日 大赛亮点 免费培训、灵活安排时间参与 多次机会冲关决赛奖励金 已购/未购用户均可参加 使用Mcloud参赛送500元机时 计算大赛——看视频学习还能赢奖金&#xff1f; 材料计算…

Java学习-MySQL-事务

Java学习-MySQL-事务 ACID原则&#xff1a;原子性、一致性、隔离性、持久性 原子性&#xff08;Atomicity&#xff09; 两个步骤要么一起成功&#xff0c;要么一起失败&#xff0c;不可能只成功一个。 举例&#xff1a; A账户400元&#xff0c;B账户600元&#xff0c;A向B转…

Cloudera的新变化:混合数据平台、端到端AI、实时数据处理

作者 | 宋慧 出品 | CSDN云计算 数据的价值和技术应用&#xff0c;获得了全行业的关注、认可和重视。 不过&#xff0c;数据赛道百家争鸣&#xff0c;数据系统的技术与行业方案众多&#xff0c;对于开发团队和用户来说&#xff0c;其实仍然需要耗费大量调研和分析的时间。 近日…

notepad++自动缩进功能

支持java等格式化 代码编辑器Notepad是程序员必备的文本编辑器&#xff0c;该软件软件功能非常强大&#xff0c;界面简洁明晰、操作方便快捷&#xff0c;设计得很人性化。Notepad官方下载支持27种编程语言&#xff0c;通吃C,C ,Java ,C#, XML, HTML, PHP,JS 等。NotePad是一个…

虹科分享 | NetFlow数据能够为网络故障排除提供什么? | 网络流量监控

NetFlow是网络设备中标准化的功能&#xff0c;用于收集流量测量值并将其导出到另一个系统进行分析。对该流数据的分析通知网络管理器网络是如何执行的以及其他使用细节。例如&#xff0c;流量分析可以通过跟踪IP和突出显示异常&#xff08;如过度使用流量&#xff09;来帮助解决…

python django4.2版本

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;django4.2版本 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参…

《中学科技》期刊简介及投稿邮箱

《中学科技》期刊简介及投稿邮箱 《中学科技》以传播科技知识、启迪智慧、培养才能为宗旨&#xff0c;提供电子技术、计算机、陆海空模型、数学、物理、化学、生物、天文等方面的科技活动资料&#xff0c;特别注意通过科学观察&#xff0c;实验和制作实践的途径&#xff0c;培…

【中标通知】塔望咨询中标新疆农发集团 品牌规划建设项目

【新疆农发集团供应链有限公司-品牌建设项目】于2022年5月正式启动。 本次项目2022年4月6日招标结果正式公示。【塔望咨询】凭借3W消费战略方法体系和专注食品行业丰富的品牌项目经验&#xff0c;中标新疆农发集团供应链有限公司兵团红品牌规划建设项目。 中标结果公告 新疆农…

[算法前沿]--014- AIGC和LLM下的Prompt Tuning微调范式

文章目录 1. Prompt Tuning含义1.1 解决问题1.2 语言模型分类1.3 Prompt-Tuning的研究进展1.4 如何挑选合适的Pattern?1.5 Prompt-Tuning的本质1.5.1 Prompt的本质是一种对任务的指令1.5.2 Prompt的本质是一种对预训练任务的复用&#xff1b;1.5.3 Prompt的本质是一种参数有效…