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,实时同步
主服务器和从服务器在正常服务的时候,主服务器会把每条写命令通过网络发送给从服务器.