Redis主从复制
使用Redis的主从复制,可以实现读写分离,分担主服务器的压力,另外也可以将数据备份放到从数据库中,同时禁止主服务器的数据备份,也可以节省主服务器的系统开销。
要实现主从复制,只需在启动redis服务时加上参数 --slaveof [master ip] port
如果主数据库设置了密码,那么还要加上参数 --masterauth [master password]
例如,在本地启动主数据库
redis-server --port 6379
然后启动从数据库
redis-server --port 6380 --slaveof 127.0.0.1 6379
使用两个客户端分别连接到6379和6380,在6379客户端写入数据,在6380客户端可以读取到。
除了在启动Redis服务时使用参数配置主从数据库,也可以在运行时使用SLAVEOF <IP> <PORT>来修改主从复制,
也可以使用SLAVEOF NO NOE命令将当前从数据库提升为主数据库。
主从复制原理:
从数据库启动时,先向主数据库发送SYNC请求,主数据库收到请求后开始在后台保存快照,同时缓存所有接收到的写命令,快照保存完毕后,将快照和缓存的所有命令发送给从数据库。从数据库接收快照,存储并更新到本地RDB文件,再从RDB文件进行恢复,恢复后执行主数据库发过来的缓存命令。
之后的同步,主数据库会将所有的命令通过Redis协议发给从数据库实现数据同步。