Redis四大模式之主从配置

Posted 3.25

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis四大模式之主从配置相关的知识,希望对你有一定的参考价值。

Redis工作模式主要有单机模式、主从模式(slave)、哨兵模式(sentinel)、集群模式(cluster)这四种,本文主要讲解一下主从模式的部署方式。

  我是windows单机进行的这套搭建操作,linux系统下搭建也是同样的,要点都是对配置文件进行一些更改。redis大家可以直接去官网https://redis.io/download下载,linux也可根据页面上的指示输入相应的指令下载。

  首先准备master的配置文件(redis.windows-service.conf),主要有port(端口号,默认是6379)、requirepass(密码)、dbfilename(数据持久化文件)、logfile(日志文件),这里我就不更改端口号和不设置密码了,所以直接使用默认的配置就可以,master-slave模式下,作为master的redis是不需要额外配置的。接下来进去redis目录,执行redis-server.exe redis.windows-service.conf即可,然后到windows服务列表(cmd窗体输入services.msc回车进入)中开启redis服务即可。回到redis目录,双击redis-cli.exe,出现以下界面则成功连接上了端口号为6379的redis服务。

 

 

 

  接下来配置第一台slave的redis。新建redis-6380目录,并复制配置文件redis.windows-service.conf和redis-server.exe 到redis-6380目录下。打开redis.windows-service.conf进行编辑,更改端口号为6380,slave规则添加一条slaveof 127.0.0.1 6379。完整的配置如下:

port 6380

dbfilename dump.rdb

logfile "server_log.txt"

slaveof 127.0.0.1 6379

cluster-enabled no

其中cluster-enabled no配置默认是 #cluster-enabled yes,可以不用更改,如果去掉屏蔽就必须更改为no,因为redis的cluster模式和slave模式是互斥的。slaveof 127.0.0.1 6379这里的值就是maste模式redia的ip和端口号,如果master设置了密码,则还需要添加“masterauth masterpassword”一项配置。然后命令行窗体进入redis-6380目录,执行redis-server.exe redis.windows-service.conf --service-name Redis6380,转到windows服务列表启动名为redis6380的服务就可以了,到现在作为slave模式运行的redis服务就正常运行了。

  打开redis-6380目录下的server_log_6380.txt文件可以看到以下界面,注意红色框部分,表示当前slave节点已经成功从master节点同步数据了:

 

 

  至此,一个master-slave模式的redis系统就部署完成,并且成功运行了。接下来我们测试一下在master节点写入的数据,能否正常同步到slave节点里面;

  在刚才的redis-cli.exe界面输入 set test-slave \'test slave of port 6380\',成功执行如下:

 

 

回到slave节点的客户端连接,我用的是命令行窗体,进入redis-6380目录,执行redis-cli.exe -h 127.0.0.1 -p 6380命令,回车,然后输入 get test-slave,得到如下界面的结果:

 

 

这就是刚才在master几点存入的test-slave键值的数据,由此运行在6380端口的slave模式redis已经能成功同步到6379端口的master模式下的数据了。

 

接下来,在master的redis客户端输入INFO replication,查看部署的集群信息,这里我部署了两台slave,端口号为6381的那台我就没有描述了,部署方式和6380那台一样:

 

 

 

  redis主从模式下,master模式的redis是不需要额外配置的,和单机模式下的配置一样,只需要更改slave模式的配置,添加slaveof masterip masterport,如果开启了cluster模式,必须要关闭,同时,如果master设置了访问密码,则slave需要配置masterauth masterpassword 一项。另外slave模式下的redis只支持读取模式,不支持写入,修改配置项 slave-read-only no即可,但是没有必要。即使在slave机器写入了数据,也不会被同步到其余redis上,如果master写入了相同键值的数据也会把slave中的数据覆盖,所以完全没有必要配置slave模式的redis为可写模式。

 

以上是关于Redis四大模式之主从配置的主要内容,如果未能解决你的问题,请参考以下文章

Redis 大型攻略之主从复制哨兵模式群集模式

Redis 大型攻略之主从复制哨兵模式群集模式

Redis之哨兵模式Sentinel配置与启动

redis应用之主从架构配置

redis主从和哨兵

Redis系列之主从复制