Redis中如何实现高可用架构?

Redis 可以通过以下方式实现高可用架构:

  1. 使用 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 
  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 ...