02、Redis 集群安装
02、Redis 集群安装
Redis 集群
是一种分布式运行 Redis
的方式,能够将数据自动分片到多个 Redis 节点
上。Redis 集群
提供一定程度的可用性,即便部分节点发生故障或无法与集群中的其他节点通信,集群仍能继续运行。如果大多数主节点不可用时,集群也无法正常工作。
1、集群端口
在 Redis 集群
中,每个节点需要开放两个端口:一个用于与客户端通信的 Redis 服务端口
(例如 6379),另一个是用于集群内部通信的 集群总线端口
。默认情况下,集群总线端口
是通过将服务端口
加上 10000
来确定的。也可以通过在 redis.conf
配置文件中的 cluster-port
选项来进行自定义设置。
在安装集群之前,必须确保每个节点的 服务端口
和 集群总线端口
能够被集群中的所有其他节点访问。
关闭防火墙或开放端口:
关闭防火墙
systemctl stop firewalld.service
开放端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
重新加载规则
firewall-cmd --reload
2、数据分片
Redis 集群
的数据分片方式不同于一致性哈希,而是采用一种基于哈希槽的分片机制。在这种机制中,每个键都映射到一个特定的哈希槽。Redis 集群
总共有 16384
个哈希槽。要计算某个给定键所对应的哈希槽,只需对该键进行 CRC16
哈希计算,然后对 16384
取模即可得到所在的槽位。
Redis 集群
中,每个节点负责一部分哈希槽。例如,假设有一个由 3 个节点组成的集群,其中:
- 节点 A 负责哈希槽 0 到 5500
- 节点 B 负责哈希槽 5501 到 11000
- 节点 C 负责哈希槽 11001 到 16383
Redis 集群
支持多个键的操作,要求在单个命令或 Lua 脚本中涉及的所有键都位于同一个哈希槽。实际情况中多个键在同一个哈希槽的可能性不大,那么为了解决这个问题,Redis 提供了 哈希标签
特性,允许强制将多个键分配到同一个哈希槽。哈希标签
的核心原理是:如果一个键包含 {} 花括号包围的子字符串,那么只有花括号内的内容会用于计算哈希。例如,键 "user:{123}:profile" 和 "user:{123}:account" 会被分配到同一个哈希槽,因为 哈希标签
是相同的。
3、集群安装
Redis 集群
的最小配置需要至少3个主节点。为了确保更高的可用性和容错性,建议使用6节点集群,其中包含3个主节点和3个副本节点。
官方安装文档:
https://redis.io/docs/latest/operate/oss_and_stack/management/scaling/#create-a-redis-cluster
3.1、创建6个节点
安装同 01、Redis 安装
。假设安装目录为:/app/redis/
,在目录下创建 6个节点目录并配置参数。
cd /app/redis/
mkdir 7000 7001 7002 7003 7004 7005
复制配置文件到 7000
节点目录中
cp /app/redis/redis-6.2.14/redis.conf ./7000/
编辑 7000
目录的配置文件以下内容:
# 后台进程启动
daemonize yes
# 关闭安全模式
protected‐mode no
# 注释 bind
# bind 127.0.0.1 -::1
# 端口
port 7000
# pidfile
pidfile /var/run/redis_7000.pid
# logfile
logfile /app/redis/7000/redis7000.log
# 数据目录
dir /app/redis/7000/
# 设置密码
requirepass 123456
# 开启AOF配置
appendonly yes
appendfilename "appendonly7000.aof"
# 启用集群配置
cluster-enabled yes
cluster-config-file nodes-7000.conf
# 设置master节点密码
masterauth 123456
替换掉其他目录的配置项
cp /app/redis/7000/redis.conf ./7001/
cp /app/redis/7000/redis.conf ./7002/
cp /app/redis/7000/redis.conf ./7003/
cp /app/redis/7000/redis.conf ./7004/
cp /app/redis/7000/redis.conf ./7005/
sed -i 's/7000/7001/g' ./7001/redis.conf
sed -i 's/7000/7002/g' ./7002/redis.conf
sed -i 's/7000/7003/g' ./7003/redis.conf
sed -i 's/7000/7004/g' ./7004/redis.conf
sed -i 's/7000/7005/g' ./7005/redis.conf
启动所有的节点
./bin/redis-server 7000/redis.conf
./bin/redis-server 7001/redis.conf
./bin/redis-server 7002/redis.conf
./bin/redis-server 7003/redis.conf
./bin/redis-server 7004/redis.conf
./bin/redis-server 7005/redis.conf
3.2、创建集群
执行以下命令创建集群:
./bin/redis-cli -a 123456 --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
-a
指定redis
密码,也就是在redis.conf
中配置的密码。--cluster-replicas 1
每个主节点创建 1 个副本。
执行后创建1个副本节点的集群,6个节点也就是3主3从,输出分配的槽位信息如下图
输入 yes
确认,集群创建成功,将看到输出内容:[OK] All 16384 slots covered.
,如下图:
连接查看集群节点信息
./bin/redis-cli -c -h 127.0.0.1 -p 7000 -a 123456
cluster nodes
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?