Redis集群搭建指南,突破单机存储限制,科普分布式缓存技术

文章导读
Redis Cluster是一个Redis的分布式实现,它支持数据自动分片(sharding),将数据分布到多个Redis节点上,从而突破单机Redis的内存限制,实现水平扩展和高可用。搭建Redis集群的基本步骤:1. 准备至少3个主节点和3个从节点,每节点安装Redis 5.0+版本;2. 编辑redis.conf配置文件,启用cluster-enabled yes,设置cluster-con
📋 目录
  1. A 环境准备
  2. B 创建集群
  3. C 分布式缓存技术原理
  4. D 添加节点到集群
  5. E 单机 vs 集群对比
  6. F 常见问题排查
A A

Redis Cluster是一个Redis的分布式实现,它支持数据自动分片(sharding),将数据分布到多个Redis节点上,从而突破单机Redis的内存限制,实现水平扩展和高可用。搭建Redis集群的基本步骤:1. 准备至少3个主节点和3个从节点,每节点安装Redis 5.0+版本;2. 编辑redis.conf配置文件,启用cluster-enabled yes,设置cluster-config-file nodes.conf,cluster-node-timeout 5000;3. 启动所有Redis实例;4. 使用redis-cli --cluster create命令创建集群,例如:redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1;5. 验证集群:redis-cli -c -p 7000 cluster info。

环境准备

首先,我们需要准备6台机器(3主3从),每台安装Redis 6.0版本。下载Redis源码:wget http://download.redis.io/releases/redis-6.0.9.tar.gz,解压后make && make install。创建6个不同端口的Redis实例目录,如7000到7005,每个目录下复制redis.conf,并修改port、pidfile、logfile、dbfilename、cluster-enabled yes等配置。

创建集群

启动所有实例:redis-server 7000/redis.conf。使用redis-cli创建集群:redis-cli --cluster create --cluster-replicas 1 192.168.1.101:7000 192.168.1.101:7001 192.168.1.102:7002 192.168.1.102:7003 192.168.1.103:7004 192.168.1.103:7005。输入yes确认。集群创建成功后,会看到[OK] All nodes agree about slots configuration。

Redis集群搭建指南,突破单机存储限制,科普分布式缓存技术

分布式缓存技术原理

Redis集群使用哈希槽(hash slot)来分片数据,总共16384个槽,每个key通过CRC16(key) % 16384计算槽位,分配到主节点。客户端可以直接连接任一节点,节点会重定向到正确槽位的节点。支持故障转移,主节点故障时从节点自动提升为主节点,实现高可用。相比单机Redis,集群突破了内存瓶颈,支持PB级数据存储。

添加节点到集群

新增主节点:redis-cli --cluster add-node 新节点IP:端口 现有节点IP:端口。新增从节点:redis-cli --cluster add-node 新从节点IP:端口 现有节点IP:端口 --cluster-slave --cluster-master-id 主节点ID(通过cluster nodes获取)。重新分片槽位:redis-cli --cluster reshard 现有节点IP:端口 --cluster-from 主节点ID --cluster-to 新主节点ID --cluster-slots 1000。

单机 vs 集群对比

单机Redis内存上限受物理机限制,通常几百GB;集群通过分片,无上限,支持无限扩展。单机读写并发低,集群支持多节点并行读写,QPS更高。但集群多key事务不支持,key必须带{tag}确保同槽。

Redis集群搭建指南,突破单机存储限制,科普分布式缓存技术

常见问题排查

集群节点无法连接:检查防火墙端口7000-7005及10000端口开放。槽位分配不均:使用reshard手动调整。忘记密码:集群模式不支持密码统一设置,每个节点单独auth。

FAQ
Q: Redis集群需要多少节点?
A: 至少3个主节点,最好3主3从实现高可用。
Q: 如何查看集群状态?
A: redis-cli -c -p 7000 cluster nodes 或 cluster info。
Q: 集群支持多key操作吗?
A: 支持,但key需带相同{hash_tag}落同一槽,如user:{1001}和user:{1001}:name。
Q: 如何删除节点?
A: 先reshard清空槽位,再redis-cli --cluster del-node 集群节点 新节点ID。
Q: Docker怎么搭建Redis集群?
A: 使用官方redis:alpine镜像,暴露7000-7005端口,docker-compose起6个容器,然后redis-cli --cluster create。