1. 如何保障redis高可用和高并发

redis主从架构,一主多从,能够满足高可用和高并发。呈现实例宕机主动进行主备切换,配置读写拆散缓解master读写压力。

2. redis高可用具体怎么施行

倡议应用官网的哨兵机制,当主节点呈现故障,由Sentinel自定实现故障发现和转移,并告诉利用方,实现高可用性。

它次要有4个性能:

  • 集群监控:负责监控redis master和slave过程是否失常工作;
  • 音讯告诉:如果某个redis实例有故障,那么哨兵负责发送报警告诉给管理员;
  • 故障转移:如果master-node挂掉了,会主动转移到slave-node;
  • 配置核心:如果故障转移产生了,告诉client客户端新的master地址。

3. 哨兵机制的原理

通过sentinel模式启动redis后,主动监控master/slave运行状况。基本原理是:心跳检测和投票裁决。

每个sentinel会向其余sentinel、master、slave定时发送音讯,如果在指定工夫内没有回应,则临时认为对方宕机。

如果哨兵群组中少数sentinel都报告某一节点没有响应,才会认为该节点真正宕机。通过Raft投票算法,从剩下的slave节点中选出一台晋升为新的matser,而后主动批改相干配置。

4. redis哨兵部署须要留神什么

至多3个实例,以保障群组的健壮性。

5. redis主从架构会失落数据吗?为什么

  • 异步复制导致的数据失落:因为master->slave数据复制是异步的,在异步复制前,如果master就宕机了,那前面行将复制的数据就失落了。
  • 脑裂导致的数据失落:某个master所在的机器脱离了失常的网络,导致slave连贯不上master,实际上master还在运行着。但哨兵认为master曾经失去连贯,并且从新选取了一个slave晋升为master,这会集群中就会呈现2个master节点。但client客户端还没来得及切换到新的master节点,依旧会把数据写入旧的master中。那当旧的master恢复正常的时候,会被当做一个slave节点挂倒新的master上面,原数据会被清空,从新从新的master复制一份数据。

6. redis主从复制的原理

  • 一个slave实例,无论是第一次连贯还是重连到master,都会收回SYNC命令;
  • master收到申请后,会做两件事:a)master执行BGSAVE,即在后盾保留数据到硬盘(rdb快照);b)master同时将新收到的写入和批改命令存入缓冲区(非查问类);
  • master在将数据存入硬盘文件胜利后,将这个快照文件发送给slave,slave收到快照后会会清空内存,加载这个文件到内存中;
  • master也会将缓冲区的命令,以redis命令协定的模式转发给slave,slave执行这些命令,实心和master的同步;
  • master/slave尔后会一直通过异步的形式进行命令同步,达到最终的数据同步统一。

7. redis过期策略有哪些

  • 惰性删除:当读/写一个曾经过期的key时,会触发惰性删除策略,间接删除掉这个过期的key;
  • 定期删除:因为惰性删除无奈保障冷数据及时删除,所以redis会定期被动淘汰一批过期数据;
  • 被动删除:以后已用内存超过maxMemory限定时,触发被动革除策略,被动删除的前提是设置了maxMemory的值。