Redis 主从介绍
Redis 支持主从复制功能,可以通过执行 slaveof(Redis5 以后改成 replicaof)或者在配置文件中设置 slaveof(Redis5 以后改成 replicaof)来开启复制功能
主可写从不可写 主挂了,从不可为主
主 Redis 配置
无需多余的配置
从 Redis 配置
修改从服务器上的 redis.conf 文件:
# slaveof <masterip> <masterport>
# 表示当前【从服务器】对应的【主服务器】的IP是192.168.10.135,端口是6379。
replicaof 127.0.0.1 6379
Redis 安装启动
#第一步:安装 C 语言需要的 GCC 环境
yum install -y gcc-c++
yum install -y wget
#第二步:下载并解压缩 Redis 源码压缩包
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar -zxf redis-5.0.5.tar.gz
#第三步:编译 Redis 源码,进入 redis-5.0.5 目录,执行编译命令
cd redis-5.0.5/src
make
#第四步:安装 Redis,需要通过 PREFIX 指定安装路径
mkdir /usr/redis -p
make install PREFIX=/usr/redis
#复制conf
cp redis.conf /usr/redis/bin/
cp sentinel.conf /usr/redis/bin/
#修改redis.conf
vim redis.conf
#注释掉则不限于本机器访问
#bind 127.0.0.1
#no 允许外界访问
protected-mode no
#yes 守护进程后台启动
daemonize yes
#占用窗口启动 --不可以被远程访问
./redis-server
#关闭
control + c
#不占用窗口启动 --不可以被远程访问
./redis-server &
#守护进程后台启动 --可以被远程访问
./redis-server redis.conf
#守护进程后台启动关闭
./redis-cli shutdown
#查看进程
ps -ef |grep redis
root 7891 1977 0 17:14 pts/1 00:00:04 ./redis-server *:6379
#关闭进程
kill -9 7891
#客户端启动
./redis-cli -h 127.0.0.1 -p 6379
# 关闭centos的防火墙
#systemctl stop firewalld
# 设置centos防火墙不开机自启动
#systemctl disable firewalld.service
Redis 主从搭建
复制 redis 分别为 一个 master 和两个 slave
cd /usr
➜ /usr cp -r redis redis-master
➜ /usr ls
bin etc games include lib lib64 libexec local redis redis-master sbin share src tmp
➜ /usr mkdir redis-ms
➜ /usr cp -r redis redis-ms/redis-slave1
➜ /usr cp -r redis redis-ms/redis-slave2
➜ /usr mv redis-master redis-ms/
➜ /usr ls
bin etc games include lib lib64 libexec local redis redis-ms sbin share src tmp
➜ /usr cd redis-ms
➜ redis-ms cd redis-slave1
➜ redis-slave1 cd bin
➜ bin vim redis.conf
修改 redis-salve1 的 redis.conf 内容为
replicaof 127.0.0.1 6379
port 6381
修改 redis-salve2 的 redis.conf 内容为
replicaof 127.0.0.1 6379
port 6382
分别重启三台 redis 服务
cd /usr/redis-ms/redis-slave2/bin
./redis-server redis.conf
cd /usr/redis-ms/redis-slave1/bin
./redis-server redis.conf
cd /usr/redis-ms/redis-master/bin
./redis-server redis.conf
查看是否启动成功
➜ bin ps -ef | grep redis
root 2696 1 0 8月05 ? 00:04:31 ./redis-server *:6379
root 6800 1 0 16:31 ? 00:00:00 ./redis-server *:6382
root 6812 1 0 16:32 ? 00:00:00 ./redis-server *:6381
root 6829 6712 0 16:33 pts/1 00:00:00 grep --color=auto
分别对主机和 slave 进行操作
master
➜ bin ./redis-cli
127.0.0.1:6379> set notion allinone
OK
127.0.0.1:6379> get notion
"allinone"
127.0.0.1:6379> set todo mic
OK
127.0.0.1:6379> get todo
"mic"
127.0.0.1:6379> quit
➜ bin kill -9 2696
➜ bin ./redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
slave1
➜ bin ./redis-cli -p 6381
127.0.0.1:6381> get notion
"allinone"
127.0.0.1:6381> set todo mic1
(error) READONLY You can't write against a read only replica.
127.0.0.1:6381>
127.0.0.1:6381> set wps w1
(error) READONLY You can't write against a read only replica.
slave2
➜ bin ./redis-cli -p 6382
127.0.0.1:6382> get notion
"allinone"
127.0.0.1:6382> set todo mic1
(error) READONLY You can't write against a read only replica.
127.0.0.1:6382> set wps w2
(error) READONLY You can't write against a read only replica.
可以看到主库 负责读写,自动同步从库
从库只能读不能写,主库挂掉,从库无法上位