linux下redis的主从

来源:互联网 发布:node 编辑:程序博客网 时间:2024/04/30 15:35

在上篇将redis安装完成后,实现主从的搭建


1、新建主从redis的存放目录;主redis放在master,从redis放在slave



2、将redis安装目录下的redis.conf文件分别复制到master和slave目录下



3、分别修改master和slave目录下的redis.conf文件

修改redis.conf配置文件

A、如果安装在服务器,修改bind 127.0.0.1的ip为你服务器ip

B、修改port的端口(我的主redis端口是10005,从端口是10006)

C、修改daemonize的no为yes;启动守护进程,生成pid文件

D、修改pidfile值,pid文件存放路径

E、修改loglevel值,log等级,可改为debug

F、修改logfile值,log文件存放路径

G、修改appendonly值,启动aof持久化。不过搭建主从的话,考虑禁用主redis持久化,从redis进行持久化就行了



4、分别到master和slave目录下启动redis服务

命令:redis-server redis.conf



5、分别连接redis主从客户端

命令:redis-cli -h [IP] -p [port]


通过info可以查看redis信息,查看role为master,表示该redis为主服务



6、修改redis为从服务。我配置10005为主服务,10006为从服务,所以我需要改10006的role状态

连接到10006端口的redis控制台,执行更改命令;slaveof 【主redis的IP】 【主redis的端口】

命令:slaveof [ip] [port]


再通过info查看redis的role状态,看到role状态为slave,并且有主服务的host和port



7、测试主从;分别连接主从redis客户端,进行set和get操作

在主服进行set操作,我们看到keys列表中有值,再到从服务查看keys列表也有相同的值。主从服务实现

(在从服务进行set操作,提示只读,从服务不进行set)



**********************************************************************

上面实现主从是通过命令实现,如果下次启动,主从会失效

可以通过修改redis.conf配置文件来实现

找到slaveof属性,默认是注释的,去掉注释,配置主服务的IP和端口,保存文件;重启redis服务就好了



**********************************************************************

主从实现流程

redis主从复制过程: 当配置好slave后,slave与master建立连接,然后发送sync命令。

无论是第一次连接还是重新连接,master都会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存。

后台进程完成写文件后,master就发送文件给slave,slave将 文件保存到硬盘上,再加载到内存中,接着master就会把缓存的命令转发给slave,后续后续master将收到的写命令发送给slave。

如果master同时收到多个slave发来的同步连接命令,master只会启动一个进程来写数据库镜像,然后发送给所有的slave。master同步数据时是非阻塞式的,可以接收用户的读写请求。在slave端确是阻塞模式的,slave在同步master数据时,并不能够响应客户端的查询。


0 0