一、Redis的主从模式

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_配置文件


单台redis可以用哨兵模式吗 redis哨兵模式最少几台_配置文件_02


主从模式需要至少两个redis服务器,这里我们用一台服务器简单做一下操作

redis的基础安装见上述连接

1.进入我们redis的根目录

cd /usr/local/redis

2.创建一个文件夹ms来存放我们两个redis服务器的配置文件,待会儿分别用不同的配置文件来启动不同的redis

mkdir ms

3.复制我们的配置文件到ms文件夹下并改名
redis1的配置文件:

cp redis.conf /usr/local/redis/ms/redis1.conf

redis2的配置文件:

cp redis.conf /usr/local/redis/ms/redis2.conf

需要多少台redis服务器就创建多少个配置文件
4.修改我们刚才的配置文件

vim /usr/local/redis/ms/redis1.conf

每个服务器的配置文件都需要修改端口号
斜杠+搜索内容可以进行搜索
如:/port

port 6380

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_服务器_03

主服务器配置

bind 0.0.0.0

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_配置文件_04


从服务器配置

bind 0.0.0.0 

slaveof 主服务器的ip地址   Redis的端口

5.进入redis的bin目录

cd /usr/local/redis/bin

6.启动redis
下述命令是启动redis1的,启动其他redis将配置文件更改一下即可

./redis-server /usr/local/redis/ms/redis1.conf

7.进入我们的主服务

./redis-cli -c -h ip地址 -p 端口号
例如
./redis-cli -c -h 127..0.0.1 -p 6379

8.使用info命令进行查看

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_单台redis可以用哨兵模式吗_05

如下图,我当前查看的就是主服务器,当前有一个从服务器连接上来

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_redis_06


9.测试

在我们的主服务器设值并查看

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_配置文件_07


可以看到我们的主服务器是即可以写,又可以读的

我们再进入从服务器进行查看,从图中可以看到,目前我们的redis角色是从服务器,还可以看到主服务器的相关信息

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_linux_08


尝试在从服务器进行设值并查看,可以看到,我们的从服务器并没有写的权限,仅仅只能读

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_配置文件_09


二、redis的哨兵模式

由于主从模式的局限性,哨兵模式诞生了

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_linux_10


哨兵模式至少要两个redis服务器,也就是在我们的主从模式的基础上,再启动哨兵,就构建成了哨兵模式,我这里是弄了两个从服务器,一个主服务器,便于观察

1.复制哨兵配置文件到我们创建的redis集群配置文件夹ms下

在我们最开始下载的redis文件根目录下有一个sentinel.conf文件,这就是我们的哨兵配置

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_linux_11

cd /usr/local/redis-6.2.7
cp sentinel.conf /usr/local/redis/ms

2.修改哨兵配置文件

vim /usr/local/redis/ms/sentinel.conf
sentinel monitor mymaster ip 端口 投票选举的次数
sentinel down-after-milliseconds mymaster 5000  多久进行检测一下主节点活着没有,不配置则是默认30s

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_单台redis可以用哨兵模式吗_12


单台redis可以用哨兵模式吗 redis哨兵模式最少几台_配置文件_13


3.启动哨兵模式

redis-sentinel /usr/local/redis/ms/sentinel.conf &

命令中&表示后台启动,不然退出后哨兵也就自动关闭了,出现下图即启动成功

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_服务器_14


4.查看我们redis都启动了那些相关的服务

ps -ef | grep redis

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_单台redis可以用哨兵模式吗_15


5.杀死redis主服务器,查看哨兵的选举过程

kill -9 1299374

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_单台redis可以用哨兵模式吗_16


如图,哨兵最开始会给主服务器发送心跳检测,当主服务器没有正常返回时,哨兵进行选举,选举了6382这个端口的redis作为主服务器

6.重新启动最开始的主服务器,也就是6380这个端口的redis

启动原来的主服务器

./redis-server /usr/local/redis/ms/redis1.conf

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_配置文件_17


图中我们看到,当我们重新启动原来的主服务器时,他自动成为了新主服务器的从服务器

7.进入6380进行查看

./redis-cli -c -h 127.0.0.1 6380

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_单台redis可以用哨兵模式吗_18


这里,我们进一步验证了,重新启动的原主服务器已经成为了新主服务器的从服务器,这就是哨兵模式及其自动选举

三、redis的集群模式

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_配置文件_19

1.在redis文件夹下创建新文件夹cluster存放集群的redis配置

cd /usr/local/redis

mkdir cluster

2.进入cluster文件夹,创建六个文件夹,用于存放六个redis配置文件

cd cluster

mkdir 7001

mkdir 7002

mkdir 7003

mkdir 7004

mkdir 7005

mkdir 7006

3.复制配置文件到7001文件夹

cp /usr/local/redis/etc/redis.conf 7001/

4.修改配置文件

vim 7001/redis.conf
bind 0.0.0.0

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_linux_20

port 7001

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_配置文件_21

pidfile /var/run/redis_7001.pid

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_单台redis可以用哨兵模式吗_22

dir "/usr/local/redis-cluster/7001"

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_单台redis可以用哨兵模式吗_23

appendonly yes

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_linux_24

cluster-enabled yes
cluster-config-file nodes-7001.conf

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_linux_25


5.将修改后的配置文件复制到另外5个文件夹下,再按照步骤4进行修改,将所有的7001修改为相对应的7002,7003,7004,7005

cp 7001/redis.conf 7002
vim 7002/redis.conf

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_redis_26


6.进入redis的bin目录下启动六个redis

cd /usr/local/redis/bin/
./redis-server /usr/local/redis/cluster/7001/redis.conf

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_redis_27

7.以如下命令启动集群

redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1

命令最后的1是主服务器与从服务器的比例值

出现下图,启动成功

单台redis可以用哨兵模式吗 redis哨兵模式最少几台_linux_28


从服务器的replicates后的值对应主服务器ip地址前的值,一 一对应,三主三从