安装Redis5
请参考网上
测试环境介绍
测试环境为centos7.5
A机器ip:10.0.8.37(主)
B机器ip:10.0.8.243(从)
Redis版本:5.0.3
主从模式介绍
以下描述参考:https://blog.csdn.net/Phplayers/article/details/94869574
主(master)和 从(slave)分别部署在不同的服务器上,当主节点服务器写入数据时会同步到从节点的服务器上,这样即使 redis 服务器的硬盘损坏,也可以在从节点的服务器中获取数据。
作用
为数据提供多个副本,实现高可用
实现读写分离(主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性)
特点
数据流向是单向的,只能是从master到slave
一个slave只能有一个master,一个master可以有多个slave,一个slave还可以有自己的slave
配置Redis主从模式
前提:在两台机器上已经安装好了Redis
A机器作为主设备,修改redis的配置文件
如果有redis进程,可以使用如下命令,杀掉相关的Redis进程
ps -ef|grep redis|grep -v grep|awk '{print $2}'|xargs sudo kill -9
对A机器的操作
拷贝一份配置文件,命名为master.conf
cp /usr/local/redis/etc/redis.conf master.conf
修改配置文件中的以下配置
注:如果需要加入redis认证,可以参考:https://www.cnblogs.com/langtianya/p/5189234.html
注释掉
# bind 127.0.0.1
在后台运行
daemonize yes
关掉保护模式
protected-mode no
Redis后台输出到文件(需要保证路径存在)
logfile "/home/zeng/redis_data/master.log"
dbfilename,及其输出路径
dbfilename "/home/zeng/redis_data/dump.rdb"
dir "/home/zeng/redis_data"
保存后用,使用redis-server执行这个配置文件来启动redis
redis-server master.conf
对B机器的操作
拷贝一份配置文件,命名为master.conf
cp /usr/local/redis/etc/redis.conf master.conf
修改配置文件中的以下配置
注释掉
# bind 127.0.0.1
在后台运行
daemonize yes
关掉保护模式
protected-mode no
Redis后台输出到文件(需要保证路径存在)
logfile "/home/zeng/redis_data/slave.log"
dbfilename,及其输出路径
dbfilename "/home/zeng/redis_data/dump.rdb"
dir "/home/zeng/redis_data"
在端口号的下面加上下面的一句话
slaveof 10.0.8.37 6379
保存后用,使用redis-server执行这个配置文件来启动redis
redis-server slave.conf
开始测试
在A机器上
使用redis-cli
在redis的控制台中输入info replication,可以看到如下信息
设定一个key
set zengraoli 111
在B机器上
同样使用redis-cli,获取这个key:get zengraoli,可以看到得到如下结果,但是在B机器上,是不能写入key的
在redis的控制台中输入info replication,可以看到如下信息
另外一种形式的主从设置
先要删掉dump.rdb否则上次配置的信息还存在着
rm -rf redis_data/*
rm -rf redis_log/*
在B机器中的配置文件中注释掉slaveof这一行
杀掉redis相关进程
ps -ef|grep redis|grep -v grep|awk '{print $2}'|xargs sudo kill -9
保存后用,使用redis-server执行这个配置文件来启动redis
redis-server slave.conf
在redis-cli中查看当前的信息
在redis-cli的控制台中,执行
slaveof 10.0.8.37 6379
让其变成从节点,可以看到一件不再能设置key的值了
如果需要把当前节点变为mater节点,则需要在redis-cli的控制台中,执行
slaveof No One