高可用
高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(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 的高可用,哨兵节点也需要做集群。