Redis主从

redis主从工作原理:

  全量数据复制:salve启动时,会和主节点建立长连接,向主节点发送一个psync的命令,请求复制数据。master收到命令,会通过bgsave生成当前数据的RDB快照,将数据发送给slave,slave会清空老数据并且加载master发送来的RDB数据。在这期间客户端可能又会有新的修改命令到master,master会将新命令缓存,持续通过长连接发送给salve,salve持续恢复数据。

  部分数据复制:slave和master断开重连之后,redis2.8之后支持部分数据复制:断点续传。master会有一个缓冲区,相当于一个缓冲队列,存放最近的命令,先进先出。slave和master断开重连之后,会将同步数据的偏移量(记录同步数据的位置)传到master。如果缓冲区能找到这个位置,直接从缓冲区增量复制,如果找不到,直接进行全量复制。

redis主从架构搭建:在一台服务器启动两个redis实例模拟主从,6379为主,6380为从,redis版本号为5.0.10,redis运行的数据放在/usr/local/redis-5.0.10/data

创建两个目录,分别存储两个目录的数据(根据实际redis存储数据的情况处理):

cd /usr/local/redis-5.0.10/data/
mkdir 6379 6380

copy一分配置文件

cd /usr/local/redis-5.0.10
cp redis-conf redis6380.conf

编辑slave配置,要注意redis版本号!!!不同的版本可能出现配置不同。5.0之前使用slaveof

# 修改端口号
port 6380 
# redis进程号文件
pidfile /var/run/redis_6380.pid  
# 指定日志文件
logfile "6380.log"
# 指定数据目录
dir /usr/local/redis‐5.0.10/data/6380
# 从本机6379实例恢复数据
replicaof 192.168.0.16 6379 
# 配置从节点只读
replica‐read‐only yes 
# 启动主实例
src/redis-server redis.conf
# 启动从实例
src/redis-server redis6380.conf

打开两个窗口:一个连接主实例,src/redis-cli,一个连接从实例,src/redis-cli -p 6380,在master上set一个键值,在slave上马上就可以看到

  

原文地址:https://www.cnblogs.com/dlcode/p/13936237.html