• Redis主从复制的操作和配置


    环境:CentOS7下安装Redis集群,默认已安装好5.0及以上版本,操作包括:

    • Redis-server环境变量配置
    • 配置集群的Redis.conf
    • Redis主从配置和启动
    • 测试主从机的数据一致性和读写分离

    一、Redis-server环境变量

    启动redis服务报错:

    -bash: redis-server: command not found
    原因:
    没有配置对应命令,类似于window的环境变量,所以命令找不到

    解决办法:
    将安装目录下的redis-server执行文件路径配置到系统执行命令里
    ln -s /usr/local/redis/redis-4.0.9/src/redis-server /usr/bin/redis-server

    其中
    /usr/local/redis/redis-4.0.9/src/redis-server 为安装目录下的redis-server服务文件地址

    二、配置集群的Redis.conf

    我们在一台服务器上开启三个Redis服务,模拟redis集群,一主两从,结构如下 

    端口信息为7001,7002,7003(若使用的服务器记得开启端口的防火墙)

    1.先创建7001~7003的三个目录,将配置文件放入对应目录并进行配置

     Redis.conf配置:

    • bind         绑定的 IP,默认是本地,可以指定 IP,表示只有指定的 IP 才可访问,注释掉的话则全部 IP 都可访问。(我们是本地开三个服务,绑定不用动,如果是分布式就0.0.0.0)
    • protected-mode     保护模式(无密码 + 无绑定 = 本地访问),默认开启。这个不用动
    • port          端口,改为700x
    • daemonize 表示以守护进程的方式运行,默认 no,需要改为 yes,避免关闭客户端后,redis 也跟着关闭。我们实验用的话,可以关掉
    • requirepass 密码,默认没有密码,如果需要则设置密码
      1. [root@VM-0-4-centos ~]# redis-cli -p 6379
      2. # 获取密码
      3. 127.0.0.1:6379> config get requirepass
      4. 1) "requirepass"
      5. 2) ""
      6. # 设置密码
      7. >127.0.0.1:6379> config set requirepass 12455
      8. OK
      9. # 重新关闭客户端再进入时,输入一下命令,则显示无权限
      10. 127.0.0.1:6379> keys *
      11. (error) NOAUTH Authentication required.
      12. # 输入密码
      13. 127.0.0.1:6379> auth 12455
      14. OK
    • 主从配置:后面说

    三、配置主从服务器

    有临时和永久两种模式:

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

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

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

    slaveof

    四、启动三台Redis服务器

    1. [root@localhost bin]# redis-server /myredis/redis6379.conf
    2. [root@localhost bin]# redis-server /myredis/redis6380.conf
    3. [root@localhost bin]# redis-server /myredis/redis6381.conf
    4. [root@localhost bin]# ps -ef | grep redis
    5. root 2999 1 0 11:58 ? 00:00:00 redis-server *:6379
    6. root 3013 1 0 11:59 ? 00:00:00 redis-server *:6380
    7. root 3019 1 0 11:59 ? 00:00:00 redis-server *:6381
    8. root 3025 2189 0 11:59 pts/0 00:00:00 grep --color=autoredis

     使用命令登录三个redis

    redis -p  <port> -a 密码   指定端口号登录redis

    执行下列操作以测试:

    • 利用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节点只能执行读操作。

  • 相关阅读:
    Day14--商品详情-渲染商品导航区域
    低代码与AIGC技术:重塑软件开发的新篇章
    单例设计模式常见的七种写法
    python3内置全局函数
    Java 基于 SPringBoot 的幼儿园管理系统,附源码、数据库
    正点原子嵌入式linux驱动开发——U-boot使用
    命令行界面 (CLI) 应用程序
    面向对象编程三⼤特性 --封装、继承、多态
    Jenkins+Docker+SVN实现SpringBoot项目半自动化部署
    python 获取下载文件的后缀
  • 原文地址:https://blog.csdn.net/qq_48826531/article/details/126943423