Redis整合MySQL主从集群

2021/9/28 19:13:51

本文主要是介绍Redis整合MySQL主从集群,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Redis作为承担缓存作用的数据库,一般会应用在高并发的场景里,而在这些高并发应用场景的数据库层面还会用到其他数据库的组件或集群以提升性能,比如用MySQL主从集群实现读写分离效果、用MyCAT组件实现分库分表的功能。另外,Redis本身会以集群的形式对外提供缓存服务。

1、用Docker搭建MySQL主从集群

这里用Docker容器搭建如下图所示的MySQL主从集群。
在这里插入图片描述

1.1 拉取mysql镜像

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

在这里插入图片描述

1.2 创建配置文件夹

新建/root/redisconf/masterMySQL/conf/root/redisconf/masterMySQL/data两个目录,在其中将会保存主mysql服务器的配置信息和数据。

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

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

[mysqld]
pid-file =/var/run/mysqld/mysqld.pid
socket =/var/run/mysqld/mysqld.sock
datadir =/var/lib/mysql
server-id =1
log-bin=mysql-master-bin

2、准备数据

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

2.1 创建数据库

进入redisDemo数据库use redisDemo

2.2 创建student数据表

create table student(
    id int not null primary key,
    name char(20),
     age int,
     score float
    );

在这里插入图片描述

2.3 向student表插入几条数据

在这里插入图片描述
从库里查看
在这里插入图片描述

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

3.1 引入redis和mysql依赖

   <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.3.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.21</version>
        </dependency>

在这里插入图片描述

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

 

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

 

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

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

 



这篇关于Redis整合MySQL主从集群的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程