关于redis:redis常见问题分析

40次阅读

共计 1375 个字符,预计需要花费 4 分钟才能阅读完成。

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 的值。
正文完
 0