首页 > 数据库 >redis做为缓存,mysql的数据如何与redis进行同步呢?

redis做为缓存,mysql的数据如何与redis进行同步呢?

时间:2024-06-09 14:32:27浏览次数:24  
标签:Canal 缓存 仓库 redis mysql Redis 同步 MySQL 数据

让我们一步步来实现如何让MySQL数据库的数据和Redis缓存保持同步。想象一下,MySQL是一个大仓库,存放着所有重要的货物(数据),而Redis则像是一个快速取货窗口,让你能更快拿到常用的东西。为了让两者保持一致,我们需要搭建一座桥梁,让仓库里的变动能及时反映到取货窗口。

第一步:理解同步的必要性

当你有一个网站或者应用,频繁地从数据库读取相同的数据时,直接从MySQL查询可能会比较慢,因为每次都要打开仓库门、找东西、关门。而Redis作为一个内存数据库,就像一个放满你最常需要物品的小盒子,打开就能拿,超快!所以我们需要把MySQL里经常用到的数据同步到Redis,这样下次访问这些数据时就不用再去仓库找了。

第二种:手动同步

最简单的同步方式就是手动操作。比如,每次你在MySQL里新增或修改一条记录后,同时也手动在Redis里做同样的操作。这种方式适合刚开始尝试或者数据变动不频繁的情况。就像每次仓库进货,你都亲手把新货放到快速取货窗口一样。

第三种:代码逻辑同步

稍微高级点,可以在你的应用程序代码里写逻辑,每次从MySQL读取数据后,顺手把它塞到Redis里。这样下次再请求同样的数据时,直接从Redis拿就行了。这就好比你建立了一个规则:每次从仓库拿东西出来,都先看看快速取货窗口有没有,没有的话再从仓库拿,并且顺手在窗口留一份。

第四种:使用MySQL的Binlog

对于大型系统,数据变化频繁,手动或代码逻辑同步可能就不够高效了。这时候可以利用MySQL的Binlog(二进制日志)。Binlog记录了MySQL所有的增删改操作。你可以通过工具(比如Canal)订阅这些日志,然后根据日志内容自动同步到Redis。这就像在仓库装了个摄像头,每当有货物进出,摄像头都会告诉快速取货窗口:“嘿,那边有变动,你也跟着变一下。”

实战步骤 - 使用Canal同步

    1.    安装Canal Server:首先,你需要在服务器上安装Canal Server,它负责监听MySQL的Binlog并解析日志。
    2.    配置Canal:设置Canal配置文件,告诉它你要监听哪个MySQL数据库,以及用户名密码等信息。
    3.    启动Canal:启动Canal Server,让它开始监听MySQL的变化。
    4.    编写客户端程序:用Java或其他语言编写一个Canal客户端,这个客户端会订阅Canal Server推送的消息。每当MySQL有数据变更,Canal Server就会把这些变更事件推送给客户端。
    5.    处理数据同步:在客户端程序里,你需要编写逻辑来处理这些变更事件。例如,当接收到插入或更新事件时,就把对应的数据写入到Redis中;如果接收到删除事件,就在Redis中删除相应数据。

标签:Canal,缓存,仓库,redis,mysql,Redis,同步,MySQL,数据
From: https://blog.csdn.net/qq_33449977/article/details/139411504

相关文章

  • Could not find artifact com.mysql:mysql-connector-j:pom:8.0.36 in central (https
    遇到修改依赖项的MySQL版本结果说找不到依赖项解决方法确保MySQL版本正确降低依赖项的MySQL版本,修改后更新即可以我的MySQL版本举例,可以降低MySQL版本到依赖项支持的版本<dependency><groupId>com.mysql</groupId><artifactId>m......
  • 安装MySQL数据库时遇到sample Databases,select databases that should be created:有
    SakilaDatabase:Sakila是一个经典的示例数据库,设计用于模拟电影租赁服务的业务流程。Sakila数据库包含电影、顾客、租赁、支付等表,可以用于练习SQL查询和了解数据库的关系模型。如果你想练习处理类似于电影租赁等实际业务场景的查询和数据操作,选择创建Sakila数据库是一......
  • 基于协同过滤的在线通用旅游平台网站java ssm mysql|全套源码+文章lw+毕业设计+课程设
    基于协同过滤的在线通用旅游平台网站javassmmysql|全套源码+文章lw+毕业设计+课程设计+数据库+ppt摘要近几年来,计算机网络的发展得到了飞速的提升,由此展开的一系列行业大洗牌也由此开始。早些年只是人们只是对于计算机和互联网有了些基础的认识,现在它正在悄悄的改变着我......
  • 高校毕业设计管理系统java ssm mysql|全套源码+文章lw+毕业设计+课程设计+数据库+ppt
    高校毕业设计管理系统javassmmysql|全套源码+文章lw+毕业设计+课程设计+数据库+ppt摘要现代学校的教学规模逐渐增加,需要处理的信息量也在增加。每年毕业,将会有大量的毕业设计要处理。传统的毕业设计管理方法已不能满足师生的需求。教师和学生需要一个简单方便的系统来......
  • Redis-6-三种缓存读写策略
    2.1旁路缓存CacheAsidePattern(旁路缓存)适合读请求比较多的场景CacheAsidePattern中服务端需要同时维系db和cache,并且是以db的结果为准。2.1.1写先更新db直接删除缓存2.1.2读先读缓存有,则从缓存返回。没有,从db中读取返回。再将读取的数据写入缓存......
  • 国内镜像站获得MySQL
    访问国内mysql镜像站#中国科学技术大学开源软件镜像http://mirrors.ustc.edu.cn/关闭防火墙和selinux#立刻停止防火墙#开机禁用防火墙#立刻停止selinux#开机禁用selinux下载软件包链接可能会随着时间变化,具体以网站为主,建议到网站直接复制wgethttps://mi......
  • mysql数据库恢复一例
    1)问题:用户报可能mysql库故障,诊断仪用不了2)检查:showdatabases;发现,其中对应的db01这个数据库不存在了,但其它的库还在。mysqlbinlogmysql-bin.0000141检查归档日志发现,数据库被drop了。3)处理:因做了MHA,找到了一个以前的备份,跟领导确认后,对全库备份中的db01这个单一库,进行恢......
  • [Java] Mybatis向Mysql插入主副表JSON数据
    ......
  • Springboot计算机毕业设计疫情下的社区居民管理系统小程序【附源码】开题+论文+mysql+
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在新冠疫情的影响下,社区管理面临着前所未有的挑战。疫情的快速传播要求社区具备更高效、更精准的管理手段,以保障居民的健康与安全。传统的社区管理方......
  • Springboot计算机毕业设计疫情下社区资源分配小程序【附源码】开题+论文+mysql+程序+
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在全球新冠疫情的背景下,社区作为防控疫情的重要阵地,面临着巨大的挑战。随着疫情的持续,社区资源的分配和管理变得尤为重要。然而,传统的资源分配方式往......