帮助中心/最新通知

质量为本、客户为根、勇于拼搏、务实创新

< 返回文章列表

【服务器相关】Redis整合MySQL主从集群的示例代码

发表时间:2025-06-16 03:46:00 小编:主机乐-Yutio
  • 4.1 搭建Redis主从复制集群
  • 4.2、代码整合
  • Redis作为承担缓存作用的数据库,一般会应用在高并发的场景里,而在这些高并发应用场景的数据库层面还会用到其他数据库的组件或集群以提升性能,比如用MySQL主从集群实现读写分离效果、用MyCAT组件实现分库分表的功能。另外,Redis本身会以集群的形式对外提供缓存服务。

    1、用Docker搭建MySQL主从集群

    这里用Docker容器搭建如下图所示的MySQL主从集群。

    在这里插入图片描述

    • 在主MySQL服务器里操作的动作会自动同步到从nysql服务器,比如在主服务器里发起的“建数据库”“通过insert语句插入数据”和“通过delete语句删除数据”的动作都会同步到从服务器,并且这些操作都会在从服务器上被执行。通过这种同步的动作能确保主从数据库间的数据一致性。
    • 在项目里,一般是向“主服务器”里写数据,从“从服务器”里读数据,用这种“读写分离”的操作方式提升数据库性能。

    具体搭建的步骤如下:

    1.1 拉取mysql镜像

      开启一个命令窗口,在其中运行docker pull mysql:latest,下载最新的mysql镜像。下载完成后,通过docker images mysql能看到如下图所示的镜像i信息。

    在这里插入图片描述

    1.2 创建配置文件夹

    新建/root/redisconf/masterMySQL/conf/root/redisconf/masterMySQL/data两个目录,在其中将会保存主mysql服务器的配置信息和数据。同时新建/root/redisconf/slaveMySQL/conf/root/redisconf/slaveMySQL/data两个目录,在其中将会保存从MySQL服务器的配置信息和数据。当然,目录可自行更改。

    1.3 编写主服务器的配置文件信息

      在/root/redisconf/masterMySQL/conf目录里新建一个my.cnf文件,在其中编写针对主mysql服务器的配置信息,主mysql服务器在启动时会读取其中的配置,具体代码如下所示:

    在这里插入图片描述

    由此能确认myMasterMysql启动成功。
    查看该Docker容器的IP地址:docker inspect myMasterMysql

    在这里插入图片描述

    可以看到,这里是172.17.0.2,这也是主mysql服务器所在的Ip地址。

    1.5 观察主服务器状态

      运行docker exec -it myMasterMysql /bin/bash命令后进入该myMasterMysql容器的命令行窗口,再运行mysql -u root -p命令,进入MYSQL服务器的命令行窗口,在这个Mysql命令里,以-u参数指定用户名,随后需要输入密码(刚才设置的123456).

    进入mysql服务器之后,再运行show master status命令观察主服务器的状态。

    在这里插入图片描述  

    可以看到,主从集群同步所用到的日志文件是mysql-master-bin.000003,当前同步的位置是156,每次运行这个命令看到的结果未必相同,请记住这两个值,在设置从mysql服务器的主从同步关系时会用到。

    1.6 配置mysql从服务器

      在/root/redisconf/slaveMaster/conf目录里,新建一个名为my.cnf的文件,编写针对从MYSQL服务器的配置信息。同样的,从Mysql服务器在启动时也会读取其中的配置,具体代码如下所示。

    在这里插入图片描述

      确认链接后,通过exit命令退出指向myMasterMysql的连接,再通过mysql -h 127.0.0.1 -u root -p命令连接到本Docker容器包含的从MySQL服务器上。

    1.8 确认主从关系

    在这里插入图片描述

      此时如果再到主mysql服务器里运行create database redisDemo创建一个数据库,那么从库里虽然没有运行命令,但是也能看到redisDemo数据库,这说明已经成功地搭建了MySQL主从复制集群。其中,主库地IP地址和端口号是172.17.0.2:3306,从库是172.17.0.3:3306.

    主库

    在这里插入图片描述

    从库

    在这里插入图片描述

    2、准备数据

      由于已经成功地设置了主从复制模式,因此如下地建表和插入语句都只需要在主库里运行。

    2.1 创建数据库

    在这里插入图片描述

    2.3 向student表插入几条数据

    在这里插入图片描述

    从库里查看

    在这里插入图片描述

    3、用Java代码读写MySQL集群和Redis

    3.1 引入redis和mysql依赖

    在这里插入图片描述

      Java应用程序是向主mySQL服务器写数据,这样写入地数据会自动同步到从mysql服务器上,而读数据时会先从Redis缓存里读,读不到时再到从mysql里读。以下用代码实现

    3.2 代码整合

    MySQLClusterDemo.java

    在这里插入图片描述

    4、MySQL主从集群整合Redis主从集群

      上面的mysql主从集群至整合了一个Redis主机,在这种模式里如果Redis服务器失效了,那么整个缓存可能都会失效。可以在次基础上引入Redis主从复制集群,以提升缓存的可用性以及性能,改进后的框架图如下所示。

    在这里插入图片描述

    应用程序同样是向主mysql服务器里写数据,这些数据同步到从mysql数据库里。

    应用程序先到“从Redis服务器”里读取缓存,如果找不到,就再到从mysql数据库里去读。

    如果从“从mysql数据库”里读到数据,那么需要写入“主Redis”,而根据Redis集群的主从复制机制,该数据会被写入“从Redis服务器”。这种针对Redis集群的读写分离机制能提升读写缓存的性能。

    4.1 搭建Redis主从复制集群

    4.1.1 创建redis-master容器

    在这里插入图片描述

    4.1.2 创建resis-slave容器

    在这里插入图片描述

    4.1.3 查看redis服务器的ip

    在这里插入图片描述

    可以看到,redis-master的ip地址为172.17.0.4

    4.1.4 主从配置

      在redis-slave容器的窗口里,通过docker exec -it redis-slave /bin/bash命令进入容器的命令行窗口。运行如下的slaveof命令,指定当前服务器为从服务器,该命令的格式是slaveof IP地址 端口号,这里指向172.17.0.2:6379所在的主服务器。

    在这里插入图片描述

    运行完该命令后,在redis-slave客户端里再次运行info replication

    在这里插入图片描述

      可以看到,该redis-slave已经成为从服务器,从属于172.17.0.2:6379所在的Redis服务器。

    4.2、代码整合

    MySQLClusterImprovedDemo.java

    在这里插入图片描述

       为了突出重点,这里我并没有设置“缓存失效时间”和“防止缓存穿透”等方面的实施代码,但是这些要点同样重要。

    到此这篇关于Redis整合MySQL主从集群的示例代码的文章就介绍到这了,更多相关Redis整合MySQL主从集群内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


    联系我们
    返回顶部