Refinex DevHubRefinex DevHub
DocsBlogProjectsSitesChangelogAbout
Assistant
你好,我可以基于当前页面内容回答问题、提炼重点,或者告诉你下一步应该继续读什么。
  1. Docs›
  2. Redis 安装指南
Overview
Nginx 安装指南
Docker 安装指南
Python 安装指南
Nacos 安装指南
Redis 安装指南
MySQL 安装指南
Maven 安装指南
RocketMQ 安装指南
Homebrew 安装指南
PostgreSQL 安装指南
  1. Docs›
  2. Redis 安装指南

Redis 安装指南

Note

版本: Redis 8.0.x(Open Source,当前最新稳定大版本) | 平台: Linux(CentOS Stream 9)

默认端口: 6379(数据)/ 16379(集群总线)/ 26379(Sentinel)

部署模式: 单机 / 主从复制 / Sentinel 哨兵高可用 / Cluster 集群分片

一、概述与架构

Redis(Remote Dictionary Server)是全球最流行的内存数据结构存储系统,可用作数据库、缓存、消息代理和向量数据库。Redis 8.0 是一次重大版本升级,内置了 Redis Query Engine(搜索)、JSON、时序数据、概率数据结构等模块,无需额外安装。

1.1 部署模式对比

模式节点数高可用数据分片适用场景
单机1❌❌开发/测试/小型缓存
主从复制≥2❌(手动切换)❌读扩展、数据备份
Sentinel 哨兵≥3 Sentinel + 主从✅ 自动故障转移❌中小规模生产高可用
Cluster 集群≥6(3主3从)✅ 自动故障转移✅ 16384 哈希槽大规模生产/高吞吐

1.2 端口规划

端口用途说明
6379Redis 数据端口客户端连接、数据读写
16379集群总线端口数据端口 + 10000,节点间通信/故障检测
26379Sentinel 端口哨兵监控与客户端发现

二、环境准备(CentOS Stream 9)

2.1 硬件要求

环境CPU内存磁盘
开发/测试≥1 核≥512 MB≥10 GB
生产(单节点)≥4 核≥8 GB≥50 GB SSD

Redis 是单线程模型(I/O 多路复用),主要瓶颈在内存和网络,而非 CPU。生产环境中,内存应预留 maxmemory 之上至少 30% 给 fork 操作(RDB/AOF 重写)和系统。

2.2 系统内核参数优化

Bash
# 关闭 THP(Transparent Huge Pages),Redis 强烈建议
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
​
# 写入开机自动执行
cat >> /etc/rc.local <<'EOF'
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
EOF
chmod +x /etc/rc.local
​
# 调整 overcommit_memory(允许 fork 时过度分配内存)
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
​
# 调整 somaxconn(TCP 连接队列)
echo "net.core.somaxconn = 65535" >> /etc/sysctl.conf
​
# 应用
sysctl -p

2.3 防火墙配置

Bash
sudo firewall-cmd --permanent --add-port=6379/tcp    # Redis 数据
sudo firewall-cmd --permanent --add-port=16379/tcp   # 集群总线
sudo firewall-cmd --permanent --add-port=26379/tcp   # Sentinel
sudo firewall-cmd --reload

三、安装前检查与卸载旧版本

重要

安装新版 Redis 前,必须彻底检查并卸载系统中已有的 Redis,否则可能导致版本冲突、配置混乱、端口占用等问题。

3.1 检查是否已安装 Redis

Bash
# 检查 systemd 服务状态
systemctl status redis
systemctl status redis-server
​
# 检查进程
ps aux | grep redis-server
​
# 检查已安装的 RPM 包
rpm -qa | grep redis
​
# 检查二进制文件位置
which redis-server
which redis-cli
​
# 检查当前 Redis 版本
redis-server --version
redis-cli --version

3.2 停止并禁用旧服务

Bash
# 停止 Redis 服务
sudo systemctl stop redis
sudo systemctl stop redis-server
​
# 禁用开机自启
sudo systemctl disable redis
sudo systemctl disable redis-server
​
# 确认已停止
systemctl status redis
ps aux | grep redis-server

3.3 卸载旧版 Redis

方式一:RPM/DNF 包安装的情况

Bash
# 查看已安装的 Redis 包
rpm -qa | grep redis
​
# 卸载(保留配置文件)
sudo dnf remove redis
​
# 彻底卸载(如果上面不完全)
sudo rpm -e $(rpm -qa | grep redis)

方式二:源码编译安装的情况

Bash
# 如果使用了 make install,二进制文件通常在 /usr/local/bin
sudo rm -f /usr/local/bin/redis-server
sudo rm -f /usr/local/bin/redis-cli
sudo rm -f /usr/local/bin/redis-sentinel
sudo rm -f /usr/local/bin/redis-benchmark
sudo rm -f /usr/local/bin/redis-check-aof
sudo rm -f /usr/local/bin/redis-check-rdb
​
# 或者在源码目录中执行
cd /opt/redis-stable   # 源码目录
sudo make uninstall

3.4 清理残留文件

Bash
# 备份旧数据(如需保留)
sudo cp -r /var/lib/redis /backup/redis-old-$(date +%Y%m%d)
sudo cp /etc/redis/redis.conf /backup/redis.conf.old.$(date +%Y%m%d)
​
# 清理配置文件
sudo rm -rf /etc/redis/
sudo rm -f /etc/redis.conf
​
# 清理数据目录
sudo rm -rf /var/lib/redis/
​
# 清理日志
sudo rm -rf /var/log/redis/
​
# 清理 PID 文件
sudo rm -rf /var/run/redis/
​
# 清理 systemd 服务文件
sudo rm -f /etc/systemd/system/redis.service
sudo rm -f /usr/lib/systemd/system/redis.service
sudo systemctl daemon-reload
​
# 清理旧仓库(如有)
sudo rm -f /etc/yum.repos.d/redis.repo
​
# 删除 redis 用户(可选,新安装会重建)
sudo userdel -r redis 2>/dev/null

3.5 最终验证

Bash
# 确认无残留进程
ps aux | grep redis-server | grep -v grep
​
# 确认无残留包
rpm -qa | grep redis
​
# 确认无残留二进制
which redis-server 2>/dev/null && echo '未清理干净!' || echo '已清理干净'
which redis-cli 2>/dev/null && echo '未清理干净!' || echo '已清理干净'
​
# 确认端口未被占用
ss -tlnp | grep -E '6379|16379|26379'
服务器现状

系统通过 RPM 包安装了旧版 Redis,运行在非标准端口 16379(/usr/bin/redis-server 0.0.0.0:16379),已运行超过 7 个月。请按上述步骤先完成卸载,再进行新版安装。

四、安装方式一:RPM 官方仓库(推荐)

4.1 添加 Redis 官方仓库

Bash
# 创建仓库文件
cat > /etc/yum.repos.d/redis.repo <<'EOF'
[Redis]
name=Redis
baseurl=http://packages.redis.io/rpm/rockylinux9
enabled=1
gpgcheck=1
EOF
​
# 导入 GPG Key
curl -fsSL https://packages.redis.io/gpg > /tmp/redis.key
sudo rpm --import /tmp/redis.key
​
# 安装 Redis
sudo yum install -y redis

4.2 启动与开机自启

Bash
sudo systemctl enable redis
sudo systemctl start redis
sudo systemctl status redis
​
# 验证
redis-cli ping
# 应返回: PONG

4.3 配置文件位置

  • 主配置文件:/etc/redis/redis.conf(或 /etc/redis.conf)
  • 数据目录:/var/lib/redis/
  • 日志文件:/var/log/redis/redis.log
  • PID 文件:/var/run/redis/redis.pid

五、安装方式二:源码编译

适用于需要自定义编译选项、启用 TLS 或使用最新版本的场景。

5.1 安装编译依赖

Bash
sudo dnf install -y gcc make wget

5.2 下载与编译

Bash
cd /opt
wget https://download.redis.io/redis-stable.tar.gz
tar -xzf redis-stable.tar.gz
cd redis-stable
​
# 标准编译
make
​
# 如需 TLS 支持(需先安装 openssl-devel)
# sudo dnf install -y openssl-devel
# make BUILD_TLS=yes
​
# 安装到 /usr/local/bin
sudo make install

5.3 编译产物

二进制文件说明
redis-serverRedis 服务端
redis-cli命令行客户端
redis-sentinelSentinel 哨兵(redis-server 的符号链接)
redis-benchmark性能基准测试工具
redis-check-aofAOF 文件检查/修复工具
redis-check-rdbRDB 文件检查工具

5.4 配置为系统服务

Bash
# 创建运行用户
sudo useradd -r -s /sbin/nologin redis
​
# 创建目录
sudo mkdir -p /etc/redis /var/lib/redis /var/log/redis
sudo chown redis:redis /var/lib/redis /var/log/redis
​
# 复制配置文件
sudo cp /opt/redis-stable/redis.conf /etc/redis/redis.conf
​
# 修改关键配置
sudo sed -i 's/^daemonize no/daemonize yes/' /etc/redis/redis.conf
sudo sed -i 's|^dir ./|dir /var/lib/redis|' /etc/redis/redis.conf
sudo sed -i 's|^logfile ""|logfile /var/log/redis/redis.log|' /etc/redis/redis.conf

创建 /etc/systemd/system/redis.service:

Text
[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
Type=forking
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
Bash
sudo systemctl daemon-reload
sudo systemctl enable redis
sudo systemctl start redis

六、Docker 部署

6.1 快速启动

Bash
docker run -d \
  --name redis \
  -p 6379:6379 \
  -v redis-data:/data \
  redis:8 \
  redis-server --requirepass "YourStrongPassword" --appendonly yes

6.2 Docker Compose(带持久化与自定义配置)

YAML
# docker-compose-redis.yml
version: '3.8'
services:
  redis:
    image: redis:8
    container_name: redis-server
    restart: always
    ports:
      - "6379:6379"
    volumes:
      - redis-data:/data
      - ./redis.conf:/usr/local/etc/redis/redis.conf
    command: redis-server /usr/local/etc/redis/redis.conf
    sysctls:
      net.core.somaxconn: 65535
    deploy:
      resources:
        limits:
          memory: 2g
​
volumes:
  redis-data:
Bash
docker compose -f docker-compose-redis.yml up -d
​
# 连接测试
docker exec -it redis-server redis-cli -a "YourStrongPassword" ping

七、核心配置详解

配置文件位置
  • RPM 安装:/etc/redis/redis.conf(或 /etc/redis.conf)
  • 源码编译安装:/etc/redis/redis.conf(需从源码目录手动复制,见第五节 5.4)
  • Docker:挂载自定义配置到容器内 /usr/local/etc/redis/redis.conf
  • Redis 8 完整版配置(含 Query Engine/JSON/TimeSeries 模块):redis-full.conf(同目录)

7.1 redis.conf 生产配置模板

Warning

Redis 8 引入了双配置文件体系:redis.conf(纯 Redis 服务端)和 redis-full.conf(含所有内置模块)。若需使用 Query Engine / JSON / TimeSeries 等功能,请使用 redis-full.conf。(注意:下属配置使用的时候不建议行尾注释)

Text
# ==========================================
#  Redis 8.0 生产环境配置模板
# ==========================================

# ---------- 网络 ----------
bind 127.0.0.1 -::1               # 仅监听本地,生产需改为内网IP(允许全部就改为 bind 0.0.0.0)
# bind 192.168.1.100 127.0.0.1
protected-mode yes                # 保护模式
port 6379
tcp-backlog 511
timeout 300                       # 客户端空闲超时(秒),0=不超时
tcp-keepalive 300

# ---------- 通用 ----------
daemonize yes
pidfile /var/run/redis/redis-server.pid
loglevel notice
logfile /var/log/redis/redis-server.log
databases 16
always-show-logo no

# ---------- 安全/认证 ----------
requirepass YourStrongRedisPassword2025!
# ACL 用户(Redis 6+ 支持)
# user appuser on >AppPassword ~app:* &* +@all -@admin

# ---------- 内存管理 ----------
maxmemory-clients 4gb
maxmemory-policy allkeys-lru
# 其他策略: volatile-lru, allkeys-random, volatile-ttl, noeviction

# ---------- RDB 持久化 ----------
save 3600 1                       # 3600秒内至少1个key变更则快照(选择一个)
save 300 100                      # 300秒内至少100个key变更(选择一个)
save 60 10000                     # 60秒内至少10000个key变更(选择一个)
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /var/lib/redis

# ---------- AOF 持久化 ----------
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec              # always / everysec / no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes          # 混合持久化(AOF文件包含RDB前导)

# ---------- 慢日志 ----------
slowlog-log-slower-than 10000     # 10ms
slowlog-max-len 128

# ---------- 客户端 ----------
maxclients 10000

# ---------- 危险命令重命名/禁用 ----------
# rename-command FLUSHDB ""
# rename-command FLUSHALL ""
# rename-command KEYS ""
# rename-command CONFIG "CONFIG_b83a2de"

7.2 持久化策略选择

策略数据安全性能影响恢复速度适用场景
RDB Only可能丢失数分钟数据低(后台 fork)快纯缓存、可容忍少量丢失
AOF Only最多丢失 1 秒中(fsync 开销)慢(日志回放)数据安全要求高
RDB + AOF(推荐)最多丢失 1 秒中快(RDB 前导 + 增量 AOF)生产环境首选
无持久化全部丢失最低—纯缓存、可随时重建
混合持久化

aof-use-rdb-preamble yes(Redis 4.0+ 默认开启):AOF 文件以 RDB 快照开头 + 增量 AOF 追加。兼具 RDB 的快速恢复和 AOF 的数据安全性,生产环境强烈推荐。

八、主从复制

配置文件

编辑从节点的 /etc/redis/redis.conf,在文件末尾追加以下复制相关配置。

8.1 配置从节点

在从节点的 /etc/redis/redis.conf 中添加:

Text
# 指向主节点
replicaof 192.168.1.11 6379

# 主节点密码
masterauth YourStrongRedisPassword2025!

# 从节点只读(默认)
replica-read-only yes

8.2 验证复制状态

Bash
# 在主节点查看
redis-cli -a <password> INFO replication
# 应显示 role:master, connected_slaves:N
​
# 在从节点查看
redis-cli -a <password> INFO replication
# 应显示 role:slave, master_link_status:up

九、Sentinel 哨兵高可用

配置文件

/etc/redis/sentinel.conf(需手动创建)。每台 Sentinel 节点各一份。

Note

Redis Sentinel 提供监控、通知、自动故障转移和服务发现。适用于不需要数据分片、但需要高可用的场景。至少部署 3 个 Sentinel 节点,且分布在不同的服务器/可用区。

9.1 架构示例

Text
       +----+
       | M1 |      (Master)
       | S1 |      (Sentinel)
       +----+
          |
+----+    |    +----+
| R2 |----+----| R3 |   (Replicas)
| S2 |         | S3 |   (Sentinels)
+----+         +----+

Quorum = 2

9.2 sentinel.conf 配置

Text
# /etc/redis/sentinel.conf
port 26379
daemonize yes
pidfile /var/run/redis/sentinel.pid
logfile /var/log/redis/sentinel.log
dir /var/lib/redis

# 监控主节点,quorum=2 表示至少2个Sentinel同意才执行故障转移
sentinel monitor mymaster 192.168.1.11 6379 2

# 主节点密码
sentinel auth-pass mymaster YourStrongRedisPassword2025!

# 30秒无响应视为主观下线
sentinel down-after-milliseconds mymaster 30000

# 故障转移超时
sentinel failover-timeout mymaster 180000

# 同时同步的从节点数(降低为1减少同步压力)
sentinel parallel-syncs mymaster 1

9.3 启动 Sentinel

Bash
# 方式一
redis-sentinel /etc/redis/sentinel.conf
​
# 方式二
redis-server /etc/redis/sentinel.conf --sentinel
​
# 查看状态
redis-cli -p 26379 SENTINEL masters
redis-cli -p 26379 SENTINEL replicas mymaster

9.4 客户端连接(Spring Boot 示例)

YAML
spring:
  data:
    redis:
      sentinel:
        master: mymaster
        nodes:
          - 192.168.1.11:26379
          - 192.168.1.12:26379
          - 192.168.1.13:26379
      password: YourStrongRedisPassword2025!

9.5 防止脑裂

在主节点 /etc/redis/redis.conf 中追加配置:

Text
# 至少1个从节点确认写入,延迟不超过10秒
min-replicas-to-write 1
min-replicas-max-lag 10

十、Redis Cluster 集群

配置文件

每个集群节点需独立的配置文件,建议按端口命名:/etc/redis/redis-7000.conf、/etc/redis/redis-7001.conf …… 每份配置的 port、cluster-config-file、dir 必须唯一。

Note

Redis Cluster 将 16384 个哈希槽分布在多个主节点上,实现自动数据分片 + 高可用。最小部署:3 主 3 从共 6 个节点。

10.1 节点配置

为每个节点准备 redis.conf(以端口 7000-7005 为例):

Text
port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
dir /var/lib/redis/7000
bind 0.0.0.0
protected-mode no
requirepass YourClusterPassword
masterauth YourClusterPassword

10.2 创建集群

Bash
# 创建目录并启动所有6个实例
for port in 7000 7001 7002 7003 7004 7005; do
  mkdir -p /var/lib/redis/$port
  redis-server /etc/redis/redis-$port.conf
done
​
# 使用 redis-cli 创建集群(3主3从)
redis-cli --cluster create \
  192.168.1.11:7000 192.168.1.11:7001 \
  192.168.1.12:7002 192.168.1.12:7003 \
  192.168.1.13:7004 192.168.1.13:7005 \
  --cluster-replicas 1 \
  -a YourClusterPassword
​
# 确认输出 [OK] All 16384 slots covered

10.3 集群操作

Bash
# 连接集群(-c 启用集群模式重定向)
redis-cli -c -p 7000 -a YourClusterPassword
​
# 查看集群状态
redis-cli -c -p 7000 -a YourClusterPassword CLUSTER INFO
​
# 查看节点信息
redis-cli -c -p 7000 -a YourClusterPassword CLUSTER NODES
​
# 重新分片
redis-cli --cluster reshard 192.168.1.11:7000 -a YourClusterPassword
​
# 添加新节点
redis-cli --cluster add-node <new-ip>:<port> <existing-ip>:<port> -a YourClusterPassword

10.4 Docker 注意事项

Redis Cluster 不支持 NAT / 端口映射环境。Docker 中必须使用 --net=host 模式:

Bash
docker run -d --net=host --name redis-7000 \
  -v /var/lib/redis/7000:/data \
  redis:8 redis-server /data/redis.conf

十一、安全加固

配置文件

以下安全配置均修改对应节点的 /etc/redis/redis.conf。ACL 用户权限单独存放在 /etc/redis/users.acl(需在 redis.conf 中通过 aclfile 指定)。TLS 证书文件建议存放在 /etc/redis/tls/ 目录下。

11.1 核心安全配置

Text
# 1. 绑定特定接口(切勿绑定 0.0.0.0 到公网)
bind 192.168.1.100 127.0.0.1

# 2. 保护模式(默认开启,无密码时阻止外部连接)
protected-mode yes

# 3. 认证密码
requirepass YourStrongRedisPassword2025!

# 4. 禁用/重命名危险命令
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command KEYS ""
rename-command DEBUG ""

11.2 ACL 访问控制列表(Redis 6+)

Redis ACL 提供比 requirepass 更细粒度的权限控制:

Bash
# 创建应用用户:只能操作 app: 前缀的 key,禁止管理命令
redis-cli ACL SETUSER appuser on >AppPassword ~app:* &* +@all -@admin -@dangerous
​
# 创建只读用户
redis-cli ACL SETUSER readonly on >ReadOnlyPass ~* &* +@read -@write -@admin
​
# 查看所有用户
redis-cli ACL LIST
​
# 持久化 ACL 到文件
redis-cli ACL SAVE

在 redis.conf 中指定 ACL 文件:

Text
aclfile /etc/redis/users.acl

11.3 TLS 加密

Text
# 需编译时启用 BUILD_TLS=yes
tls-port 6380
tls-cert-file /etc/redis/tls/redis.crt
tls-key-file /etc/redis/tls/redis.key
tls-ca-cert-file /etc/redis/tls/ca.crt
tls-auth-clients optional

十二、生产环境优化

配置文件

以下优化项均修改 /etc/redis/redis.conf。部分参数支持通过 redis-cli CONFIG SET <param> <value> 在线热修改,修改后执行 redis-cli CONFIG REWRITE 持久化到配置文件。

12.1 内存优化策略

配置项推荐值说明
maxmemory物理内存的 60-70%预留给 fork、OS 缓冲、连接等
maxmemory-policyallkeys-lru(缓存场景)或 noeviction(数据库场景,写满报错)
activedefragyesRedis 4+ 在线内存碎片整理
lazyfree-lazy-evictionyes异步释放被淘汰的 key
lazyfree-lazy-expireyes异步释放过期 key

12.2 监控指标

Bash
# 查看关键信息
redis-cli INFO memory     # 内存使用
redis-cli INFO stats      # 命中率、命令统计
redis-cli INFO replication # 复制状态
redis-cli INFO persistence # 持久化状态
redis-cli INFO clients    # 客户端连接
​
# 慢查询日志
redis-cli SLOWLOG GET 20
​
# 实时监控命令
redis-cli MONITOR         # 注意:生产慎用,性能开销大
​
# 延迟诊断
redis-cli --latency
redis-cli --latency-history
redis-cli --intrinsic-latency 10

12.3 Prometheus 监控

使用 redis_exporter 采集指标:

Bash
# 启动 exporter
./redis_exporter \
  -redis.addr redis://127.0.0.1:6379 \
  -redis.password "YourPassword"

Prometheus 配置:

YAML
scrape_configs:
  - job_name: 'redis'
    static_configs:
      - targets: ['192.168.1.11:9121']

Grafana Dashboard 推荐:Dashboard ID 763(Redis Dashboard for Prometheus)

12.4 备份策略

Bash
# 手动触发 RDB 快照(后台执行)
redis-cli -a <password> BGSAVE
​
# 定时备份脚本(crontab)
# 每小时备份 RDB 文件
0 * * * * cp /var/lib/redis/dump.rdb /backup/redis/dump-$(date +\%Y\%m\%d\%H).rdb
​
# 每天异地备份
0 2 * * * rsync -az /backup/redis/ backup-server:/remote/redis/
Tip

RDB 文件可在 Redis 运行时安全复制(写时复制语义),适合直接用 cp 或 rsync 备份。

十三、常见问题与排查

13.1 启动报 WARNING:overcommit_memory

现象: WARNING overcommit_memory is set to 0!

解决: echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf && sysctl -p

13.2 启动报 WARNING:THP

现象: WARNING you have Transparent Huge Pages (THP) support enabled

解决: 参照第二节 2.2 关闭 THP

13.3 连接被拒绝

现象: DENIED Redis is running in protected mode

排查步骤:

  1. 检查 bind 是否包含客户端所在网段的 IP
  2. 确认 protected-mode 与 requirepass 配置正确
  3. 检查防火墙是否开放 6379 端口

13.4 内存使用超出 maxmemory

现象: OOM command not allowed when used memory > maxmemory

排查步骤:

  1. redis-cli INFO memory 查看 used_memory_human 和 maxmemory_human
  2. 检查 maxmemory-policy 是否为 noeviction(改为 allkeys-lru 可自动淘汰)
  3. 排查大 key:redis-cli --bigkeys
  4. 考虑扩容内存或迁移到 Cluster 分片

13.5 RDB fork 延迟

现象: 大数据集时 BGSAVE 或 BGREWRITEAOF 导致短暂延迟

优化:

  • 确保 vm.overcommit_memory = 1
  • 关闭 THP
  • 使用 SSD 磁盘
  • 控制单实例数据量(建议单实例不超过 25 GB)

13.6 Cluster 节点无法加入

现象: CLUSTERDOWN The cluster is down

排查步骤:

  1. 确认所有节点的集群总线端口(数据端口+10000)已开放
  2. 检查 cluster-config-file 是否冲突(每个节点必须唯一)
  3. redis-cli CLUSTER INFO 查看 cluster_slots_ok 是否为 16384
  4. redis-cli CLUSTER NODES 检查节点状态

十四、快速参考

常用命令速查

操作命令
启动服务redis-server /etc/redis/redis.conf
连接 CLIredis-cli -h <host> -p <port> -a <password>
连接集群redis-cli -c -p 7000 -a <password>
查看全部信息redis-cli INFO
触发 RDB 快照redis-cli BGSAVE
触发 AOF 重写redis-cli BGREWRITEAOF
慢查询日志redis-cli SLOWLOG GET 20
扫描大 Keyredis-cli --bigkeys
延迟测试redis-cli --latency
基准测试redis-benchmark -q -n 100000 -a <password>
在线修改配置redis-cli CONFIG SET <param> <value>
持久化配置变更redis-cli CONFIG REWRITE
优雅关闭redis-cli SHUTDOWN SAVE

关键文件路径

文件/目录说明
/etc/redis/redis.conf主配置文件
/etc/redis/sentinel.confSentinel 配置文件
/etc/redis/users.aclACL 用户权限文件
/var/lib/redis/dump.rdbRDB 快照文件
/var/lib/redis/appendonlydir/AOF 文件目录(Redis 7+)
/var/log/redis/redis.logRedis 日志
/var/log/redis/sentinel.logSentinel 日志
← 上一篇
下一篇 →
一、概述与架构1.1 部署模式对比1.2 端口规划二、环境准备(CentOS Stream 9)2.1 硬件要求2.2 系统内核参数优化2.3 防火墙配置三、安装前检查与卸载旧版本3.1 检查是否已安装 Redis3.2 停止并禁用旧服务3.3 卸载旧版 Redis3.4 清理残留文件3.5 最终验证四、安装方式一:RPM 官方仓库(推荐)4.1 添加 Redis 官方仓库4.2 启动与开机自启4.3 配置文件位置五、安装方式二:源码编译5.1 安装编译依赖5.2 下载与编译5.3 编译产物5.4 配置为系统服务六、Docker 部署6.1 快速启动6.2 Docker Compose(带持久化与自定义配置)七、核心配置详解7.1 redis.conf 生产配置模板7.2 持久化策略选择八、主从复制8.1 配置从节点8.2 验证复制状态九、Sentinel 哨兵高可用9.1 架构示例9.2 sentinel.conf 配置9.3 启动 Sentinel9.4 客户端连接(Spring Boot 示例)9.5 防止脑裂十、Redis Cluster 集群10.1 节点配置10.2 创建集群10.3 集群操作10.4 Docker 注意事项十一、安全加固11.1 核心安全配置11.2 ACL 访问控制列表(Redis 6+)11.3 TLS 加密十二、生产环境优化12.1 内存优化策略12.2 监控指标12.3 Prometheus 监控12.4 备份策略十三、常见问题与排查13.1 启动报 WARNING:overcommit_memory13.2 启动报 WARNING:THP13.3 连接被拒绝13.4 内存使用超出 maxmemory13.5 RDB fork 延迟13.6 Cluster 节点无法加入十四、快速参考常用命令速查关键文件路径