Redis 常见部署架构

type
status
date
slug
summary
tags
category
icon
password

一、Redis 部署架构概述

Redis 支持多种部署架构,每种架构都有其特定的应用场景和优缺点。选择合适的部署架构对系统性能和可靠性至关重要。

二、常见部署架构类型

1. 单实例部署

特点:最简单的部署方式,单个 Redis 实例 适用场景:开发测试环境、数据量小的应用 优缺点
  • 优点:部署简单,维护方便
  • 缺点:单点故障,性能有限
notion image

2. 多实例部署

特点:在同一服务器上运行多个 Redis 实例 配置示例
适用场景:资源隔离,不同业务使用不同实例 优缺点
  • 优点:资源隔离,避免单实例资源竞争
  • 缺点:仍然存在单点故障风险

3. 主从复制(Master-Slave)

notion image
特点:一主多从,主节点写,从节点读 配置方式: 在从节点配置文件中添加:
查看主从状态:
主从切换:
从服务器
主服务器
工作机制
  • 异步数据复制
  • 从节点默认只读
  • 支持级联复制
优缺点
  • 优点:读写分离,提高读性能,数据备份
  • 缺点:主节点单点故障,写性能瓶颈

4. 哨兵模式(Sentinel)

notion image
特点:监控主从节点,自动故障转移 配置示例
工作机制
  • 监控主节点和从节点状态
  • 自动故障检测和转移
  • 配置自动更新
适用场景:需要高可用的场景

5. 分片集群模式(Cluster)

notion image
特点:数据分片,自动分区,高可用
数据分片:使用哈希槽(hash slot)共16384个槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽, 集群的每个节点负责一部分hash槽
节点要求:至少3个主节点,建议每个主节点配1个从节点
notion image
官方推荐,集群部署至少要 3 台以上的master节点,最好使用 3 主 3 从六个节点的模式。
优缺点
  • 优点:高可用,高性能,可扩展
  • 缺点:配置复杂,客户端需要支持集群协议
192.168.66.144 3个集群模式的实例 7001 7002 7003
192.168.66.143 3个集群模式的实例 7004 7005 7006
创建分片集群
  • redis-cli --cluster create
    • 使用 redis-cli 的 -cluster 子命令来创建集群。
  • -cluster-replicas 1
    • 表示给每个主节点分配 1 个从节点。
      Redis Cluster 默认需要至少 3 个主节点,用来分配 16384 个哈希槽。
      有了 -cluster-replicas 1,集群会自动把 6 个节点分成:
      3 个主节点
      3 个从节点
      Redis 会尽量把主节点和从节点分配到不同机器上,避免单机宕机导致整个槽位不可用。
  • redis-cli --cluster info
    • 用来查看 Redis Cluster 集群的整体信息(类似于status的概念)。
  • keys 数
    • 0 keys:该节点上当前存放了多少 key。
  • slots 槽数量
    • Redis 集群一共有 16384 个槽
    • 这里显示该节点负责多少个槽,比如:
      • 节点 7001 管理 5461 个槽
      • 节点 7002 管理 5461 个槽
      • 节点 7003 管理 5462 个槽
  • slaves
    • 表示该主节点有多少个从节点。
  • 总结部分
    • [OK] 6 keys in 3 masters.
      • 集群有多少个 key,多少个主节点。
    • 0.00 keys per slot on average.
      • 每个槽平均多少个 key。
连接集群测试数据读写

三、架构对比

架构类型
可用性
性能
扩展性
复杂度
适用场景
单实例
开发测试
多实例
资源隔离
主从复制
高(读)
读写分离
哨兵模式
高(读)
高可用
集群模式
大规模应用

四、配置注意事项

1. 网络配置

2. 持久化配置

3. 安全配置


五、最佳实践建议

  1. 生产环境至少使用哨兵模式,确保高可用性
  1. 监控关键指标:内存使用率、命中率、连接数、持久化状态
  1. 定期备份:结合RDB和AOF两种持久化方式
  1. 容量规划:预留20-30%的内存空间
  1. 客户端配置:实现重试机制和连接池

六、常见问题及解决方案

  1. 脑裂问题:在哨兵模式中配置合理的quorum值
  1. 数据不一致:使用WAIT命令确保数据同步
  1. 内存不足:设置合理的maxmemory-policy
  1. 性能瓶颈:使用pipeline减少网络往返

七、扩展知识

1. Redis模块系统

Redis支持通过模块扩展功能,如:
  • RedisSearch:全文搜索
  • RedisJSON:JSON文档存储
  • RedisGraph:图数据库

2. Redis流(Stream)

用于实现消息队列功能,支持消费者组模式

3. Redis事务

使用MULTI/EXEC命令实现简单事务,但不支持回滚

八、注意

  1. 端口号使用建议:避免使用知名端口,建议使用6379以上的端口
  1. 密码安全:示例中缺少密码配置,生产环境必须设置强密码
  1. 数据目录权限:应设置适当的文件权限,避免数据泄露
 
Loading...