Redis 高可用

Posted by icoding168 on 2020-04-07 19:44:46

分类: Redis  

高可用

高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999% 等等)。

持久化

持久化是将数据备份到硬盘,保证数据不会因 Redis 进程退出而丢失。

Redis 有两种持久化方式:

  • RDB:对 Redis 中的数据执行周期性的持久化。
  • AOF:对每条写入命令作为日志,以 append-only 的模式写入一个日志文件中,在 Redis 重启的时候,可以通过回放 AOF 日志中的写入指令来重新构建整个数据集。

Redis 默认开启 RDB 持久化方式,RDB 适合大规模的数据恢复但它的数据一致性和完整性较差,AOF 的数据完整性比 RDB 高但数据恢复速度慢,而且 AOF 可能会有一些隐藏的 Bug。最安全的做法是 RDB 与 AOF 同时使用,即使 AOF 文件损坏无法修复,还可以用 RDB 来恢复数据。

主从架构

主从架构,读写分离, 一主多从。主节点负责写,并且将数据复制到从节点,从节点负责读,主节点要开启持久化。

除了一主多从结构,还有树状主从结构。

哨兵集群

哨兵节点用于实现 Redis 集群的高可用,主要有以下功能:

  • 集群监控:负责监控 Redis 主节点和从节点是否正常工作。
  • 消息通知:如果某个 Redis 实例有故障,那么哨兵负责发送消息作为报警通知给管理员。
  • 故障转移:如果主节点挂掉了,哨兵会自动在从节点中选举出新的主节点。
  • 配置中心:如果故障转移发生了,通知客户端新的主节点地址。

为了更好地保障 Redis 的高可用,哨兵节点也需要做集群。