一、为什么需要 Redis 集群?
Redis 单机模式存在三大瓶颈:
容量瓶颈:单机内存有限,无法存储海量数据;
并发瓶颈:单线程处理能力有限,高并发下性能易打满;
高可用瓶颈:单机故障会导致服务中断,无自动容灾能力。
因此,搭建 3 主 3 从 的 Redis 集群,可实现数据分片存储、多节点并发支撑、主从自动故障转移,满足生产级需求。
二、Redis 集群部署(Ubuntu 服务器实战)
- 环境准备
确保服务器已安装 Redis 源码包(以 Redis 6.2.9 为例),若未安装,执行:
bash
下载并解压
wget http://download.redis.io/releases/redis-6.2.9.tar.gz
tar -zxvf redis-6.2.9.tar.gz
cd redis-6.2.9
2. 集群目录与节点初始化
为 6 个节点(3 主 3 从)创建独立工作目录,并准备日志目录:
bash
mkdir -p cluster/{7000,7001,7002,7003,7004,7005} logs
3. 批量生成节点配置(避免手动重复劳动)
先为 7000 节点生成基础配置,再通过循环复制并修改其他节点:
bash
生成 7000 节点的 redis.conf
cat >> cluster/7000/redis.conf << EOF
port 7000
daemonize yes # 后台运行
bind 0.0.0.0 # 允许所有 IP 访问(远程连接需开启)
protected-mode no # 关闭保护模式(测试阶段简化配置)
cluster-enabled yes # 开启集群模式
cluster-config-file nodes-7000.conf # 集群配置文件
cluster-node-timeout 5000 # 集群节点超时时间
logfile "./cluster/logs/redis-7000.log" # 日志文件路径
dir "./cluster/7000" # 数据存储目录
appendonly yes # 开启 AOF 持久化(可选,增强数据安全性)
EOF
批量复制配置到 7001~7005 节点,并替换端口
for port in {7001..7005}; do
cp cluster/7000/redis.conf cluster/$port/
sed -i "s/7000/$port/g" cluster/$port/redis.conf
done
4. 编译与启动所有节点
先编译 Redis 源码(首次部署需执行),再启动 6 个节点:
bash
编译 Redis
make
启动所有节点(后台运行)
for port in {7000..7005}; do
src/redis-server cluster/$port/redis.conf
done
验证节点是否启动(应看到 6 个 redis-server 进程)
ps -ef | grep redis-server
5. 创建 Redis 集群
使用 redis-cli 初始化 3 主 3 从的集群(--cluster-replicas 1 表示 “1 个从节点对应 1 个主节点”):
bash
src/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
执行后,终端会显示主从分配方案,输入 yes 确认。看到 [OK] All 16384 slots covered. 表示集群创建成功(16384 个哈希槽全部分配)。
6. 验证集群功能
连接任意节点,测试数据的 “自动路由” 与读写:
bash
连接 7000 节点(-c 开启“集群模式”,自动处理跨节点路由)
src/redis-cli -c -p 7000
写入数据(Key 会自动路由到对应槽位的主节点)
127.0.0.1:7000> set cluster_test "hello redis cluster"
读取数据(自动从存储该 Key 的节点获取)
127.0.0.X:XXXX> get cluster_test # 应返回 "hello redis cluster"
三、Tiny RDM 可视化连接集群(踩坑重点)
- 常见连接失败原因
端口未开放:Redis 集群节点(7000~7005)和 “集群总线端口”(17000~17005)需在服务器防火墙 / 安全组中放行;
Redis 配置限制:redis.conf 中 bind 127.0.0.1 会限制 “仅本地访问”,需改为 bind 0.0.0.0;
连接模式错误:Tiny RDM 需用「集群模式」连接,而非 “单机模式”。 - 正确连接步骤
打开 Tiny RDM,点击「+ 添加新连接」;
切换到左侧 「集群模式」 选项卡;
配置关键信息:
连接名:自定义(如「Redis 集群」);
添加节点:输入服务器 IP + 端口(如 101.42.19.204:7000、101.42.19.204:7001,多填几个节点更稳定);
密码 / 用户名:若 Redis 未配置认证(requirepass),留空即可;
点击「测试连接」,成功后点击「确认」。
四、踩坑总结与解决方案 - 日志文件找不到?
错误提示:Can't open the log file: No such file or directory;
解决:先创建日志目录 mkdir -p cluster/logs,再启动节点。 - 远程连接 “被拒绝”?
检查 服务器防火墙:放行 70007005、1700017005 端口(以 Ubuntu 为例,执行 sudo ufw allow 7000:7005/tcp 和 sudo ufw allow 17000:17005/tcp);
检查 Redis 配置:确保 redis.conf 中 bind 0.0.0.0 且 protected-mode no;
检查 云服务器安全组:在云平台(如腾讯云、阿里云)的 “安全组” 中,添加 “允许 TCP 70007005、1700017005 端口” 的入站规则。 - 集群数据路由异常?
确保连接 Redis 时添加 -c 参数(redis-cli -c -p 7000),开启 “集群模式” 的自动路由能力。
五、Redis 集群的应用场景 - 高并发缓存
电商场景:缓存商品详情、库存数量、订单状态,减轻数据库压力;
社交场景:缓存用户动态、好友列表、消息通知,提升响应速度。 - 分布式会话管理
多服务器部署的 Web 应用,可通过 Redis 集群统一存储用户登录态(如 Token、Session),实现 “会话共享”。 - 高可用数据存储
主节点故障时,从节点会自动升级为新主节点,保障服务不中断(生产级高可用的核心优势)。
通过以上步骤,从集群部署到可视化管理就能顺畅落地~ 若有更多 Redis 集群优化需求,欢迎留言交流~