作者:抵达不了了的叫幸福_999 | 来源:互联网 | 2023-10-14 12:50
篇首语:本文由编程笔记#小编为大家整理,主要介绍了REDIS主从搭建相关的知识,希望对你有一定的参考价值。
一、搭建主从配置
-
这里在一台机器上采用伪分布式的方式部署(生产环境应该是多台机器)
-
安装redis5.0以上
mkdir redis-master redis-slave1 redis-slave2
tar -zxvf redis-5.0.10.tar.gz
cd redis-5.0.10
make install PREFIX=/usr/local/redis-ms/redis-master/
cp redis.conf /usr/local/redis-ms/redis-master/bin/
问题1:gcc:命令未找到
yum -y install gcc automake autoconf libtool make
问题2:致命错误:jemalloc/jemalloc.h:没有那个文件或。。。
make MALLOC=libc
-
修改redis.conf
# 将`daemonize`由`no`改为`yes`
daemonize yes
# 默认绑定的是回环地址,默认不能被其他机器访问
# bind 127.0.0.1
# 是否开启保护模式,由yes该为no
protected-mode no
#有密码的话
requirepass 123456
masterauth 123456
-
复制master到slave
cp -r redis-master
修改slave1的redis.conf
#port改为6380,并加上replicaof 127.0.0.1 6379
port 6380
replicaof 127.0.0.1 6379
修改slave2的redis.conf
#port改为6381,并加上replicaof 127.0.0.1 6379
port 6381
replicaof 127.0.0.1 6379
-
启动
cd redis-master/bin/
./redis-server redis.conf
cd ../../redis-slave1/bin/
./redis-server redis.conf
cd ../../redis-slave2/bin/
./redis-server redis.conf
-
测试
在master插入数据
cd ../../redis-master/bin
./redis-cli
127.0.0.1:6379> set name Tom
在slave里检验是否同步
cd /usr/local/redis-ms/redis-slave1/bin
./redis-cli -p 6380
127.0.0.1:6380> get name
二、哨兵模式
- kill上一步已启动的reids
- 创建三个sentinel
cd /usr/local/redis-ms
mkdir redis-sentinel1 redis-sentinel2 redis-sentinel3
- 复制及配置
cp -r redis-master
修改配置文件
这里修改 daemonize 为 yes
修改sentinel down-after-milliseconds mymaster 30000 改为 3000
其它的可以不用改
有密码的话:
sentinel auth-pass mymaster 123456
注意位置,要在sentinel monitor mymaster 127.0.0.1 6379 2后面
sentinel down-after-milliseconds mymaster 3000 : 指定多少毫秒之后
主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒,改成3秒
- 复制sentinel1到sentinel2和3
cp -r redis-sentinel1
- 启动
依次启动
redis-master、redis-slaver1、redis-slaver2、
redis-sentinel1、redis-sentinel2、redis-sentinel3#启动redis-master和redis-slaver
#在redis-master目录下
./redis-server redis.conf
#在redis-slaver1目录下
./redis-server redis.conf
#在redis-slaver2目录下
./redis-server redis.conf
#启动redis-sentinel
#在redis-sentinel1目录下
./redis-sentinel sentinel.conf
#在redis-sentinel2目录下
./redis-sentinel sentinel.conf
#在redis-sentinel3目录下
./redis-sentinel sentinel.conf