内容简介: 本文先分享下如何搭建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,指定配置文件
服务启动成功如下:
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服务
测试主从模式:
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的主从模式的时候,应该打开主服务器的持久化功能
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 搭建Redis主从+哨兵模式
- Docker搭建MySQL主从复制
- MySQL主从复制搭建及详解
- redis的主从集群环境搭建
- MySQL -- 基于Docker搭建主从集群
- MySQL 主从复制搭建,基于日志(binlog)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。