• 黑马点评-Redis主从集群


    Redis主从集群

    为什么Redis要配置主从集群呢?或者说配置主从集群的优势?

    我们知道Redis是用于做缓存的,而且Redis的读次数远远多于写的次数,因此我们配置主从集群的目的在于,主节点进行写操作,从节点用于读操作。从而提高系统的并发能力。

    我们基于CentOS 7配置Redis集群

     

    共包含三个节点,一个主节点,两个从节点。

    这里我们会在同一台虚拟机中开启3个redis实例,模拟主从集群,信息如下:由于我们是在一个虚拟机上配置集群,因此需要将其设置不同的端口

     准备实例和配置

    要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。

    1)创建目录

    我们创建三个文件夹,名字分别叫7001、7002、7003:

    1. # 进入/tmp目录
    2. cd /tmp
    3. # 创建目录
    4. mkdir 7001 7002 7003

    2)拷贝配置文件到每个实例目录

    然后将redis-6.2.4/redis.conf文件拷贝到三个目录中(在/tmp目录执行下列命令):

    1. # 方式一:逐个拷贝
    2. cp redis-6.2.4/redis.conf 7001
    3. cp redis-6.2.4/redis.conf 7002
    4. cp redis-6.2.4/redis.conf 7003
    5. # 方式二:管道组合命令,一键拷贝
    6. echo 7001 7002 7003 | xargs -t -n 1 cp redis-6.2.4/redis.conf

    3)修改每个实例的端口、工作目录

    修改每个文件夹内的配置文件,将端口分别修改为7001、7002、7003,将rdb文件保存位置都修改为自己所在目录(在/tmp目录执行下列命令):

    1. sed -i -e 's/6379/7001/g' -e 's/dir .\//dir \/tmp\/7001\//g' 7001/redis.conf
    2. sed -i -e 's/6379/7002/g' -e 's/dir .\//dir \/tmp\/7002\//g' 7002/redis.conf
    3. sed -i -e 's/6379/7003/g' -e 's/dir .\//dir \/tmp\/7003\//g' 7003/redis.conf

     启动

    为了方便查看日志,我们打开3个ssh窗口,分别启动3个redis实例,启动命令:

    1. # 第1个
    2. redis-server 7001/redis.conf
    3. # 第2个
    4. redis-server 7002/redis.conf
    5. # 第3个
    6. redis-server 7003/redis.conf

     开启主从关系

    现在三个实例还没有任何关系,要配置主从可以使用replicaof 或者slaveof(5.0以前)命令。

    有临时和永久两种模式:

    • 修改配置文件(永久生效)

      • 在redis.conf中添加一行配置:slaveof

    • 使用redis-cli客户端连接到redis服务,执行slaveof命令(重启后失效):

    slaveof  

            这里我们为了演示方便,使用方式二。

            通过redis-cli命令连接7002,执行下面命令:

    1. # 连接 7002
    2. redis-cli -p 7002
    3. # 执行slaveof
    4. slaveof 192.168.150.101 7001

             通过redis-cli命令连接7003,执行下面命令:

    1. # 连接 7003
    2. redis-cli -p 7003
    3. # 执行slaveof
    4. slaveof 192.168.150.101 7001

            然后连接 7001节点,查看集群状态: 

    1. # 连接 7001
    2. redis-cli -p 7001
    3. # 查看状态
    4. info replication

            结果:

     测试

    执行下列操作以测试:

    • - 利用redis-cli连接7001,执行```set num 123```
    • - 利用redis-cli连接7002,执行```get num```,再执行```set num 666```
    • - 利用redis-cli连接7003,执行```get num```,再执行```set num 888```

    可以发现,只有在7001这个master节点上可以执行写操作,7002和7003这两个slave节点只能执行读操作。 

  • 相关阅读:
    使用TortoiseGit建立本地仓库,上传初版工程
    万字详解数据仓库、数据湖、数据中台和湖仓一体
    亚马逊云科技 云技能孵化营——我的云技能之旅
    9-AJAX-下-axios
    R语言dplyr包intersect函数获取在两个dataframe中都存在的数据行、获取两个dataframe交叉的数据行
    Ribbon负载均衡的原理以及负载均衡的配置和饥饿加载
    GraphQL vs REST:API设计的现代选择
    python借助wxFormBuilder工具搭建基础的GUI界面—wxFormBuilder工具使用介绍
    Linux软件管理RPM的使用
    Rust Rocket: 构建Restful服务项目实战
  • 原文地址:https://blog.csdn.net/abc123mma/article/details/127757183