我就是奇迹

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Redis 的 Cluster(集群)架构

Redis 的 Cluster(集群)架构,比主从更进阶,可以实现:

 

数据分片(水平扩展)

高可用(自动故障转移)

多个节点共同存储、读写、冗余

 


 

 

🚀 Redis Cluster 架构图(最小生产级)

 

          Redis Cluster (3 主 3 从)
        ┌────────────┐
        │  redis-7000│←────┐
        └────────────┘     │
        ┌────────────┐     │
        │  redis-7001│←──┐ │
        └────────────┘   │ │
        ┌────────────┐   │ │
        │  redis-7002│←┐ │ │
        └────────────┘ │ │ │
        ┌────────────┐ │ │ │
        │  redis-7003│─┘ │ │
        └────────────┘   │ │
        ┌────────────┐   │ │
        │  redis-7004│────┘ │
        └────────────┘     │
        ┌────────────┐─────┘
        │  redis-7005│
        └────────────┘

        主节点:7000、7001、7002
        从节点:7003、7004、7005(各自跟随前面主节点)

 

 


 

 

✅ 准备工作

 

 

我们采用 Docker + redis-cli + redis:7 镜像 手动搭建,学习效果最扎实!

 


 

 

🧱 一、创建网络

 

docker network create redis-cluster-net

 

 


 

 

🧰 二、启动 6 个 Redis 容器(3 主 3 从)

 

 

你可以创建一个 shell 脚本或手动跑 6 次:

for port in 7000 7001 7002 7003 7004 7005
do
  mkdir -p ~/redis-cluster/${port}
  cat > ~/redis-cluster/${port}/redis.conf <<EOF
port ${port}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
EOF

  docker run -d \
    --name redis-${port} \
    --network redis-cluster-net \
    -v ~/redis-cluster/${port}/redis.conf:/usr/local/etc/redis/redis.conf \
    -v ~/redis-cluster/${port}/data:/data \
    -p ${port}:${port} \
    redis:7 \
    redis-server /usr/local/etc/redis/redis.conf
done

 

 


 

 

🔧 三、用 

redis-cli

 创建集群

 

 

Redis 官方要求使用 redis-cli 创建集群(或者 redis-trib.rb)

 

安装 redis-cli(本地或容器中)之后,执行以下命令:

docker run -it --rm \
  --network redis-cluster-net \
  redis:7 \
  redis-cli --cluster create \
    redis-7000:7000 redis-7001:7001 redis-7002:7002 \
    redis-7003:7003 redis-7004:7004 redis-7005:7005 \
    --cluster-replicas 1

你会看到提示:

>>> Performing hash slots allocation ...
>>> Adding replica redis-7003 to redis-7000
>>> Adding replica redis-7004 to redis-7001
>>> Adding replica redis-7005 to redis-7002
>>> Nodes configuration updated
>>> Assigning slots to master nodes...
...

yes 回车即可自动建好集群!

 


 

 

✅ 四、测试 Redis Cluster 是否可用

 

 

进入任何一个节点:

docker exec -it redis-7000 redis-cli -p 7000

试着存取数据:

> set user1 tom
> get user1

然后换个节点(如 7002)读这个 key:

docker exec -it redis-7002 redis-cli -p 7002
> get user1

你可能看到 MOVED 提示,这是 Redis 告诉你这个 key 属于哪个 slot,自动跳转。

 

posted on 2025-04-21 10:52  我就是奇迹  阅读(66)  评论(0)    收藏  举报