首页 > 代码库 > redis主从同步

redis主从同步

    redis是一个开源的,内存中的数据结构存储系统.它可以用作数据库,缓存和消息中间件.

它支持多种数据类型,如字符串(strings),散列(hash),列表(list),集合(set),有序集合(sorted sets)等

redis内置了复制,LUA脚本,LRU驱动事件,事务和不同策略的磁盘持久化,并通过Resia哨兵(sentinel)和

自动分区(Cluster)实现可用性.

  其它功能还包括:

  1,复制

  2,订阅/发布

  3,LUA脚本

  4,过期key自动删除

  5,内存回收

  6,自动故障移除

 

    redis的主从复制原理

  redis的主从复制分为全量复制和增量复制

  1,初始化

  在从服务器第一次连接上主服务器的时候会发送PSYNC命令,主服务器收到PSYNC命令后执行BGSAVE命令

创建一条子线程进行将数据存放到RDB文件中,并把此期间接收到的写命令缓存到内存中.当RDB快照完成后,主服务

器会把快照发送给所有从服务器.从服务器接收并保存快照数据,然后将数据载入内存中.最后主服务器把缓存的写命令

发送给从服务器,从服务器执行这些命令更新数据

  2,断线重连

  redis在2.8之后支持增量数据同步时.redis会在内存中缓存下要发送给从服务器的内容,当从服务器断线重连后

会向主服务器发送"希望同步的主服务器ID"和"希望同步的数据偏移位置".主服务器在接收同步请求后会验证主服务器ID

是否与自己的ID一致,然后再验证缓存中是否存在请求的偏移位置.如果存在则同步数据.

  3,实时同步

  主服务器和从服务器在正常服务的时候,主服务器会把每条写命令通过网络发送给从服务器.

redis主从同步