redis的主从模式搭建及注意事项

栏目: 数据库 · 发布时间: 5年前

内容简介:​ 本文先分享下如何搭建redis的主从模式配置,以及主从模式配置的注意事项1,yum install gcc-c++2,wget

​ 本文先分享下如何搭建 redis 的主从模式配置,以及主从模式配置的注意事项

安装

1,yum install gcc-c++

  • 安装环境

2,wget http://download.redis.io/releases/redis-4.0.2.tar.gz

  • 获取压缩包
  • 我的安装路径:/usr/local/redis

3,tar -zxvf redis-4.0.2.tar.gz

  • 解压

4,cd redis-4.0.2

  • 切换到对应目录

5,make

自此,redis已经安装成功

6,./src/redis-server redis.conf

  • 启动redis,指定配置文件

服务启动成功如下:

redis的主从模式搭建及注意事项

7,Ctrl+c

  • 退出当前服务
  • 由于不是以守护线程的方式去启动,所以需要Ctrl+c停止服务

8,vi redis.conf

  • 修改配置文件
  • daemonize no 修改为 daemonize yes ,以守护线程启动

9,./src/redis-server redis.conf

  • 再次启动redis

10,ps -ef |grep redis

  • 查看redis服务

11,./src/redis-cli

  • 启动客户端链接
  • 键入info,查看当前redis信息
  • 键入shutdown 停止redis服务

单机redis就安装和调试完了。

redis 主从模式配置

主从模式

​ redis的主从模式,使用异步复制,slave节点异步从master节点复制数据,master节点提供读写服务,slave节点只提供读服务(这个是默认配置,可以通过修改配置文件 slave-read-only 控制)。master节点可以有多个从节点。配置一个slave节点只需要在redis.conf文件中指定 slaveof master-ip master-port 即可。

本示例:一个master节点有两个slave节点

配置:

1,cd /usr/local/redis/redis-4.0.2

  • 切换到当前redis安装路径

2, mkdir config

  • 新建一个文件夹,存放redis的配置文件

3,在config下,新建三个配置文件,如下:

cd config

vi master-6739.conf

bind 0.0.0.0
port 6379
logfile "6379.log"
dbfilename "dump-6379.rdb"
daemonize yes
rdbcompression yes

vi slave-6380.conf

bind 0.0.0.0
port 6380
logfile "6380.log"
dbfilename "dump-6380.rdb"
daemonize yes
rdbcompression yes
slaveof 192.168.81.135 6379

vi slave-6381.conf

bind 0.0.0.0
port 6381
logfile "6381.log"
dbfilename "dump-6381.rdb"
daemonize yes
rdbcompression yes
slaveof 192.168.81.135 6379

master-6739.conf,为主节点配置文件,slave-6380.conf,slave-6381.conf为从节点配置文件

在从节点的配置文件中使用:slaveof 指定master节点

4,启动三台reids服务

[root@localhost redis-4.0.2]# ./src/redis-server config/master-6379.conf 
[root@localhost redis-4.0.2]# ./src/redis-server config/slave-6380.conf 
[root@localhost redis-4.0.2]# ./src/redis-server config/slave-6381.conf

查看一下redis服务

redis的主从模式搭建及注意事项

测试主从模式:

a,先分别连上三台Redis服务,获取key为name的值,通过-p 指定连接那个端口的redis服务

[root@localhost redis-4.0.2]# ./src/redis-cli -p 6379
127.0.0.1:6379> get name
(nil)
[root@localhost redis-4.0.2]# ./src/redis-cli -p 6380
127.0.0.1:6380> get name
(nil)
[root@localhost redis-4.0.2]# ./src/redis-cli -p 6381
127.0.0.1:6381> get name
(nil)
#获取的值都为空

b,给master节点set一个key

[root@localhost redis-4.0.2]# ./src/redis-cli -p 6379
127.0.0.1:6379> set name cmy
OK
127.0.0.1:6379> get name
"cmy"

c,slave节点直接读取key为name的值

[root@localhost redis-4.0.2]# ./src/redis-cli -p 6380
127.0.0.1:6380> get name
"cmy"
[root@localhost redis-4.0.2]# ./src/redis-cli -p 6381
127.0.0.1:6381> get name
"cmy"

d,slave节点只提供读服务,不能进行写入操作

127.0.0.1:6381> set age 23
(error) READONLY You can't write against a read only slave.

注意

使用主从模式时应注意matser节点的持久化操作,matser节点在未使用持久化的情况详情下如果宕机,并自动重新拉起服务,从服务器会出现丢失数据的情况。

首先,禁止matser服务持久化

127.0.0.1:6379> CONFIG SET save ""
OK

在master节点set一个值

127.0.0.1:6379> set age 23
OK

slave节点可以get到age的值

127.0.0.1:6380> get age
"23"

关掉master节点服务

127.0.0.1:6379> shutdown
not connected>

slave节点此时仍可以get到age的值

127.0.0.1:6380> get age
"23"

重启master服务,此时获取不到age的值

[root@localhost redis-4.0.2]# ./src/redis-server config/master-6379.conf 
[root@localhost redis-4.0.2]# ./src/redis-cli -p 6379
127.0.0.1:6379> get age
(nil)

slave节点此时在获取age的值为空,数据丢失

[root@localhost redis-4.0.2]# ./src/redis-cli -p 6380
127.0.0.1:6380> get age
(nil)

数据丢失的原因:

​ 因为master服务挂了之后,重启服务后,slave节点会与master节点进行一次完整的重同步操作,所以由于master节点没有持久化,就导致slave节点上的数据也会丢失掉。所以在配置了Redis的主从模式的时候,应该打开主服务器的持久化功能


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

码出高效:Java开发手册

码出高效:Java开发手册

杨冠宝、高海慧 / 电子工业出版社 / 2018-10 / 99.00元

《码出高效:Java 开发手册》源于影响了全球250万名开发工程师的《阿里巴巴Java开发手册》,作者静心沉淀,对Java规约的来龙去脉进行了全面而彻底的内容梳理。《码出高效:Java 开发手册》以实战为中心,以新颖的角度全面阐述面向对象理论,逐步深入地探索怎样成为一位优秀开发工程师。比如:如何驾轻就熟地使用各类集合框架;如何得心应手地处理高并发多线程问题;如何顺其自然地写出可读性强、可维护性好的......一起来看看 《码出高效:Java开发手册》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具