问:redis的pipeline有什么好处?redis
前面作测试数据的时候用到 cat /tmp/redisTest.txt | /redis-5.0/src/redis-cli -h 127.0.0.1 -p 6379 --pipe算法
就是一个pipeline管道批量执行指令,能够节省屡次IO往返的时间,可是若是指令间有依赖建议分批发送缓存
问:redis的同步机制?服务器
主从同步原理,通常集群都是一个主多个从,主负责写,从负责读。开始主节点会启动命令开始全量同步,而后会启动增量同步。区块链
全同步过程:测试
增量同步过程:blog
主从的弊端就是主服务器挂掉以后就不能进行写操做了,因此就有了sentinel 哨兵进程
解决主从同步Master宕机后的主从切换问题:ip
流言协议Gossip,在杂乱无章中寻求一致(区块链中有用到):内存
Redis的集群原理
问:如何从海量数据里快速找到所需?
一致性哈希算法(哈希环):对2^32次方取模,将哈希值的空间组织成虚拟圆环
当NodeC宕机了(在一致性哈希算法中,若是一台服务器不能够,其影响的只是此服务器到哈希环的前一台服务器(逆时针方向上的第一台)之间的数据,其余数据不受影响,新增的数据也会到下一个节点,顺时针的下一台)
新增服务器NodeX (新增一台服务器,受影响的只是新服务器到其环的前一台服务器,逆时针第一台之间的数据)
Hash环数据倾斜问题(大部分数据缓存到一个服务器上,分配不均匀)
一致性哈希又引入了虚拟节点解决数据倾斜的问题(一个节点计算多个hash值,结算结果位置放置一个虚拟节点,具体作法能够在节点后面增长编号来实现)
在实际应用中把虚拟节点设置成32或更大,即便是不多的服务节点也能很好的数据分布。