微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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 引入redisMysqL依赖

   <!-- 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主从复制集群,以提升缓存的可用性以及性能,改进后的框架图如下所示。

在这里插入图片描述

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐