Redis 可以通过以下方式实现高可用架构:
- 使用 Redis 哨兵(Sentinel)实现高可用:
- Redis 哨兵监控多个 Redis 主节点,如果主节点故障会自动将从节点提升为主节点。
- 应用连接的是哨兵节点,哨兵会自动将应用连接指向当前的主节点。
- 这样当主节点失效时,可以自动进行主备切换,实现 Redis 的高可用。
例如:
# Redis 节点
redis-server --port 6379 --slaveof 127.0.0.1 6380
redis-server --port 6380
# Redis 哨兵
redis-sentinel /etc/sentinel.conf
sentinel.conf 配置文件:
# 监控名为 "mymaster" 的主节点
sentinel monitor mymaster 127.0.0.1 6379 2
# 至少要两个哨兵同意,才认为主节点失效
sentinel down-after-milliseconds mymaster 30000
# 新主节点优先选择 slave-priority 值大的节点
sentinel parallel-syncs mymaster 1
- 使用 Redis 集群(Cluster)实现高可用:
- Redis 集群将数据分片到多个节点,每个节点存储一部分数据。
- 当某个节点失效时,集群会将失效节点的数据迁移到其他节点,对外提供服务不中断。
- 这样可以实现 Redis 的高可扩展和高可用。
例如:
# 启动第一个节点
redis-server --port 7001 --cluster-enabled yes --cluster-config-file nodes.conf
# 启动其它节点
redis-server --port 7002 --cluster-enabled yes --cluster-config-file nodes.conf
redis-server --port 7003 --cluster-enabled yes --cluster-config-file nodes.conf
...
# 创建集群
redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 ...