为了不单点故障,Redis提供了复制功能,能够实现自动同步的过程。redis
同步后的数据分为两类:一类是主数据库(master),一类是从数据库(slave)。主数据库能够进行读写操做,当发生写操做时自动将数据同步给从数据库。而从数据通常只读,并接受主数据库同步过来的数据。数据库
在Redis使用复制功能,只须要在从数据库的配置文件中加入"salveof 主数据库IP 主数据库端口"便可,主数据库无需进行任何配置。windows
下面咱们在同一台服务器上启动两个Redis实例,监听不一样的端口,其中一个做为主数据库,另外一个做为从数据库。缓存
首先,咱们要复制一个Redis服务的配置文件,并取名为redis6380.conf。服务器
咱们修改redis6380.conf配置文件中的端口号为6380,而且配置改Redis实例为主数据库的从数据库。性能
配置从数据库命令行
接着,我作了两个启动Redis的bat批处理文件,用于启动两个Redis数据库:code
内容分别是:server
redis-server redis.windows.conf //启动主数据库
redis-server redis6380.conf //启动从数据库
如今咱们启动主从数据库的客户端:blog
主数据库的客户端就在Redis的安装目录下,双击redis-cli.exe便可。
从数据库的启动,咱们打开cmd,进入Redis的目录,输入
这样,咱们就有了两个Redis数据库服务端和客户端,下面就来演示复制的功能:
首先,在主数据库中输入
而后,在从数据库的客户端,咱们进行查询操做
能够看到,在从数据库中获取的name属性的值。
注:除了经过配置文件或命令行设置slaveof参数,还能够在运行时使用slaveof命令修改:
若是该数据库已是其余主数据库的从数据库了,slaveof命令会中止和原来的数据库的同步转而和新的数据库进行同步。
当一个数据库启动后,会向主数据库发送SYNC命令,主数据库收到SYNC命令后开始在后台保存快照,并将保存期间收到的命令缓存起来。当快照完成后,Redis会将快照文件和全部的缓存的命令发送给从数据库,从数据库接收到后,会载入快照文件并执行收到的缓存的命令。当主从数据库断开重连后会从新执行上述操做。
为了提升性能,能够经过复制功能简历若干个从数据库,并在从数据库中启用持久化,同时在主数据中禁用持久化。当从数据库崩溃时重启后主数据会自动将数据同步过来,因此无需担忧数据丢失。而当主数据库崩溃时,须要在从数据库中使用slaveof no one 命令将从数据库提高为主数据继续服务,并将原来的主数据库启动后使用slaveof命令将其设置为新的主数据库的从数据库,便可将新的数据同步过来。
一、Redis入门指南(李子骅)