加群联系作者vx:xiaoda0423
仓库地址:https://webvueblog.github.io/JavaPlusDoc/
https://1024bat.cn/
下面是 Redis 安装与部署的完整文档,涵盖了:
✅ 单机安装(适用于开发、测试)
✅ 主从复制 + 持久化配置(适用于生产)
✅ 常见问题与优化建议
✅ 一、单机安装 Redis(开发或测试)
🧩 1. 安装依赖
sudo apt update
sudo apt install build-essential tcl -y
📦 2. 下载并编译 Redis
wget http://download.redis.io/releases/redis-6.2.14.tar.gz
tar xzf redis-6.2.14.tar.gz
cd redis-6.2.14
make
sudo make install
可执行文件将安装到
/usr/local/bin/
:redis-server
,redis-cli
, 等。
🛠 3. 修改配置文件(redis.conf
)
bind 0.0.0.0 # 支持远程访问
protected-mode no # 关闭保护模式
requirepass yourpasswd # 设置访问密码(生产务必设置)
daemonize yes # 后台运行
🚀 4. 启动 Redis 服务
redis-server redis.conf
✅ 测试连接
redis-cli -a yourpasswd
127.0.0.1:6379> ping
PONG
✅ 二、主从复制(高可用基础)
假设:
主节点:192.168.1.101
从节点:192.168.1.102
📍 主节点配置(redis.conf)
bind 0.0.0.0
protected-mode no
requirepass yourpasswd
📍 从节点配置(redis.conf)
bind 0.0.0.0
protected-mode no
replicaof 192.168.1.101 6379
masterauth yourpasswd
requirepass yourpasswd
✅ 验证主从同步
在主节点执行:
redis-cli -a yourpasswd set name "redis-master"
在从节点验证:
redis-cli -a yourpasswd get name
# 输出:redis-master
✅ 三、持久化配置(RDB + AOF)
在 redis.conf
中启用:
save 900 1 # 900 秒内至少 1 个 key 变化就保存 RDB 快照
save 300 10
save 60 10000appendonly yes # 开启 AOF 持久化
appendfilename "appendonly.aof"
建议生产开启 AOF,保障数据更完整。
✅ 四、设置开机启动(Ubuntu)
sudo cp utils/redis_init_script /etc/init.d/redis
sudo update-rc.d redis defaults
✅ 五、常用命令参考
命令 | 说明 |
---|---|
redis-server redis.conf | 启动 Redis 实例 |
redis-cli -a 密码 | 连接 Redis |
info replication | 查看主从状态 |
CONFIG SET requirepass xxx | 动态设置密码 |
CONFIG GET * | 查看当前所有配置 |
shutdown | 安全关闭 Redis |
✅ 六、优化建议(生产环境)
配置项 | 建议 |
---|---|
maxmemory | 限制最大内存,避免 OOM |
maxmemory-policy | 设置淘汰策略(如 allkeys-lru) |
appendfsync | 设置为 |
tcp-keepalive | 避免连接死链 |
bind + | 设置内网访问 + 登录密码 |
✅ 七、常见问题排查
问题 | 原因与解决方案 |
---|---|
DENIED Redis is running... | 没有设置密码或密码错误 |
Can't connect to Redis | 端口未开放、防火墙未关闭 |
主从不同步 | IP、端口或 |
无法远程访问 | bind 和 |
✅ 八、安装可视化工具(推荐)
工具名 | 功能说明 |
---|---|
RedisInsight | 官方可视化管理工具(推荐) |
RDM | 支持多平台的 GUI 工具 |
AnotherRedisDesktopManager | 高颜值、支持 SSH 和集群 |
Redis 安装与部署指南(2025 年版)
适用对象:需要在生产环境(4 vCPU / 16 GB RAM 以上)快速部署 Redis(单机、哨兵、Cluster 模式)的后端 / 运维工程师。
1. 版本概览
分支 | 最新小版本 | 发布时间 | 生命周期 | 备注 |
---|---|---|---|---|
7.2 | 7.2.5 | 2025‑03‑15 | 2025‑Q4 之前为当前 GA | 推荐新集群直接使用,包含 ACL、复制流水线优化 |
7.0 LTS | 7.0.15 | 2025‑02‑20 | 至 8.0 GA+18 个月 | 长期支持分支,企业常用 |
6.2 | 6.2.14 | 2025‑01‑30 | 维护到 2025‑12 | 仅安全补丁,不再推荐新建集群 |
建议:若项目依赖模块(如 RedisBloom、RedisSearch),可直接采用 Redis Stack 7.2.x。纯 KV/QoS 场景使用官方 7.2 即可。
2. 环境要求
资源 | 最低 | 推荐生产 |
---|---|---|
CPU | 2 vCPU | ≥4 vCPU(核心数影响并发) |
内存 | 4 GB | ≥16 GB(取决于数据量) |
磁盘 | SSD ≥ 50 GB | SSD/NVMe, |
OS | Ubuntu 22.04 / AlmaLinux 9 / Debian 12 | 内核 ≥5.15,关闭透明大页 |
系统调优:
# redis.conf 需要关闭 THP
echo never > /sys/kernel/mm/transparent_hugepage/enabled# /etc/sysctl.d/99-redis.conf
vm.overcommit_memory = 1
net.core.somaxconn = 65535
fs.file-max = 2097152
# 生效
sysctl -p /etc/sysctl.d/99-redis.conf# ulimit (/etc/security/limits.conf)
* soft nofile 65536
* hard nofile 65536
3. 安装方式对比
方式 | 优点 | 缺点 |
---|---|---|
APT/YUM | 快速、一条命令 | 版本跟随发行版,可能落后 |
官方源码编译 | 最新、灵活 | 需安装 gcc/make,编译耗时 |
Docker / K8s(Bitnami / Redis-OSS 官方镜像) | 分发简单、隔离好 | 持久化卷、资源限制需关注 |
生产环境:若非容器平台,推荐源码编译 + systemd;云原生建议使用 Bitnami Helm Chart 或 Redis Operator (K8s) 。
4. 单节点快速安装(源码 + systemd)
# 4.1 获取源码(7.2.5)
wget https://download.redis.io/releases/redis-7.2.5.tar.gz# 4.2 编译
apt-get update && apt-get install -y build-essential jemalloc-dev tcl
mkdir -p /opt/redistar -xzf redis-7.2.5.tar.gz -C /opt/redis
cd /opt/redis/redis-7.2.5 && make -j$(nproc)
make install PREFIX=/usr/local/redis# 4.3 创建用户与目录
useradd --system --home /var/lib/redis --shell /sbin/nologin redis
mkdir -p /var/lib/redis /var/log/redis /etc/redis
cp /opt/redis/redis-7.2.5/redis.conf /etc/redis/redis.conf
chown -R redis:redis /var/lib/redis /var/log/redis /etc/redis# 4.4 修改关键配置 (/etc/redis/redis.conf)supervised systemd
bind 0.0.0.0port 6379dir /var/lib/redislogfile /var/log/redis/redis.log
# 建议持久化策略save 900 1save 300 10maxmemory 8gbmaxmemory-policy allkeys-lrurequirepass "Prod#Redis2025!"appendonly yesappendfsync everysec
创建 systemd 服务
cat >/etc/systemd/system/redis.service <<'EOF'
[Unit]
Description=Redis In-Memory Data Store
After=network.target[Service]
Type=notify
User=redis
Group=redis
ExecStart=/usr/local/redis/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/redis/bin/redis-cli -a Prod#Redis2025! shutdown
Restart=always
LimitNOFILE=65536[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reload
systemctl enable --now redis
验证:redis-cli -a Prod#Redis2025! info server
。
5. 哨兵模式(高可用)
5.1 架构
Master ×1、Slave ×2、Sentinel ×3(可与 Slave 同机)
Sentinel 端口默认 26379
5.2 快速配置 sentinel.conf
port 26379
sentinel monitor mymaster 192.168.10.11 6379 2
sentinel auth-pass mymaster Prod#Redis2025!
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 10000
各节点 sentinel 只需修改本机 IP 与日志路径即可,systemd 同理。
5.3 故障转移流程
Sentinel 判定 master down → 选举新 master。
自动
SLAVEOF
其余节点。客户端通过 VIP / 域名 + Sentinel discover 重连。
6. Redis Cluster 模式(水平扩展)
6.1 规划
节点总数 ≥6(3 master + 3 replica)
同一主从放不同机架
6.2 关键配置
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
requirepass Prod#Redis2025!
masterauth Prod#Redis2025!
多端口部署或 Docker 每实例单端口均可。
6.3 初始化集群
redis-cli -a Prod#Redis2025! --cluster create \10.0.0.1:7000 10.0.0.2:7000 10.0.0.3:7000 \10.0.0.4:7000 10.0.0.5:7000 10.0.0.6:7000 \--cluster-replicas 1
验证:redis-cli -a Prod#Redis2025! -c -h 10.0.0.1 -p 7000 cluster info
。
7. 性能调优
维度 | 建议 |
---|---|
maxmemory-policy | 缓存业务推荐 |
RDB & AOF | 禁用同写盘 ,AOF |
内核 | net.core.somaxconn=65535 ; |
客户端超时 | timeout 300 ;Cluster 模式关闭 Nagle: |
慢查询 | slowlog-log-slower-than 10000 ;借助 redis-slowlog + ELK |
8. 监控与告警
Prometheus Exporter:
oliver006/redis_exporter
→ Grafana DashboardRedis-Overall
。Key 指标:
used_memory_rss
,connected_clients
,instantaneous_ops_per_sec
,keyspace_hits/misses
,aof_current_size
,master_link_down_since_seconds
。容器化时注意 cgroup 限制:
mem_fragmentation_ratio
> 1.5 需排查。
9. 备份与恢复
方法 | 优缺点 |
---|---|
RDB 快照 | 全量备份,可用 |
AOF | 持久化每条写命令,可重放到最新 |
Disaster Recovery (DR) | 主 → 异地从库 (replica) |
恢复示例:
systemctl stop redis
cp /backup/dump.rdb /var/lib/redis/
chown redis:redis /var/lib/redis/dump.rdb
systemctl start redis
10. 常见问题排查
问题 | 处理 |
---|---|
ERR max number of clients reached | 调大 |
内存暴涨 | 查看 |
主从延迟大 | 网络抖动 / RDB/AOF rewrite;监控 |
Cluster | 节点 IP 变动未重建集群;确保 |
11. 升级策略
6.2 → 7.x 支持滚动升级:从从节点开始;
CONFIG SET protected-mode no
临时关闭;升级完毕重新CONFIG REWRITE
。大版本前务必全量 RDB 备份或冷数据快照。
太好了!下面我将为你补充两部分:
✅ 一、Redis 高可用部署指南(Sentinel + Cluster)
📌 1. Sentinel 哨兵模式(高可用主从自动切换)
📐 架构示意图:
+------------------------+| redis-sentinel1 |+------------------------+| |+-----------+ +------------+| |
+----------------+ +----------------+
| redis-master | <----> | redis-slave |
+----------------+ +----------------+| |+-----------+ +-----------+| |+------------------------+| redis-sentinel2 |+------------------------+
📌 配置步骤(以 3 个哨兵 + 1 主 2 从为例):
🔧 redis-master.conf
port 6379
bind 0.0.0.0
requirepass mypass
masterauth mypass
🔧 redis-slave.conf
port 6379
bind 0.0.0.0
replicaof 192.168.1.101 6379 # 主节点 IP
masterauth mypass
requirepass mypass
🔧 sentinel.conf(每台哨兵)
port 26379
sentinel monitor mymaster 192.168.1.101 6379 2
sentinel auth-pass mymaster mypass
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
所有节点监听 6379,哨兵监听 26379,监控名称为
mymaster
✅ 启动哨兵:
redis-sentinel /path/to/sentinel.conf
📌 2. Redis Cluster 集群模式(数据分片 + 高可用)
架构推荐:
6 个节点:3 主 3 从
每主节点一个从节点作为故障切换
🔧 创建节点配置(例如:7000~7005)
修改 6 份配置:
port 7000 # 改为 7001~7005
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
requirepass mypass
masterauth mypass
🚀 启动 6 个 Redis 实例(每个都独立)
redis-server redis7000.conf
...
redis-server redis7005.conf
🧠 创建集群
# 安装 Ruby redis-cli 工具(推荐)
gem install redis
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
创建时选择:每主分配一个从。
✅ 二、Spring Boot 集成 Redis 配置(支持单机、哨兵、集群)
✅ 1. Maven 依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
✅ 2. application.yml 示例
🔹 单机模式:
spring:redis:host: 192.168.1.101port: 6379password: mypass
🔹 Sentinel 模式:
spring:redis:sentinel:master: mymasternodes:- 192.168.1.101:26379- 192.168.1.102:26379- 192.168.1.103:26379password: mypass
🔹 Cluster 模式:
spring:redis:cluster:nodes:- 192.168.1.101:7000- 192.168.1.102:7001- 192.168.1.103:7002- 192.168.1.104:7003- 192.168.1.105:7004- 192.168.1.106:7005password: mypass
✅ 3. 示例代码(RedisTemplate)
@Service
public class RedisService {@Autowiredprivate StringRedisTemplate redisTemplate;public void save(String key, String value) {redisTemplate.opsForValue().set(key, value, Duration.ofMinutes(10));}public String get(String key) {return redisTemplate.opsForValue().get(key);}
}
🧩 补充建议
使用
Lettuce
默认连接池(Spring Boot 内置)若并发较高,可改为
Redisson
,支持分布式锁等扩展功能可用
CacheManager
结合 Spring 缓存注解@Cacheable
Spring Boot + Redisson 分布式锁实战,RedisCluster的部署自动化脚本
太好了!下面我将为你完整补充两部分内容:
✅ 一、Spring Boot + Redisson 分布式锁实战
使用 Redisson 来实现分布式锁,适用于高并发环境(如订单下单、秒杀、任务调度防重等)
📦 1. 引入 Maven 依赖(推荐用最新 Redisson 版本)
<dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-boot-starter</artifactId><version>3.22.1</version>
</dependency>
⚙️ 2. application.yml 配置
✅ 单机 Redis
redisson:single-server-config:address: redis://192.168.1.101:6379password: mypass
✅ Redis Cluster
redisson:cluster-servers-config:node-addresses:- redis://192.168.1.101:7000- redis://192.168.1.102:7001- redis://192.168.1.103:7002password: mypass
也可以在 Java 中用
Config
构造。
✅ 3. 分布式锁使用示例(推荐写法)
@Service
public class LockService {@Autowiredprivate RedissonClient redissonClient;public void doBusiness() {RLock lock = redissonClient.getLock("my-distributed-lock");try {boolean success = lock.tryLock(5, 10, TimeUnit.SECONDS);if (success) {// 成功加锁后执行业务逻辑System.out.println("获取锁成功,执行业务");Thread.sleep(3000); // 模拟处理} else {System.out.println("未获取到锁");}} catch (InterruptedException e) {e.printStackTrace();} finally {if (lock.isHeldByCurrentThread()) {lock.unlock();System.out.println("释放锁");}}}
}
✅ 4. 注解方式封装(可选)
你可以用 AOP + 自定义注解封装 @DistributedLock(key="xxx")
来增强分布式锁体验。需要我写这一部分可以继续加。
✅ 二、Redis Cluster 自动化部署脚本(6 节点,3主3从)
适用于本地开发或快速起测试环境
📁 目录结构建议
redis-cluster/
├── redis-7000.conf
├── redis-7001.conf
├── redis-7002.conf
├── redis-7003.conf
├── redis-7004.conf
├── redis-7005.conf
├── start-all.sh
├── create-cluster.sh
📄 示例 redis-7000.conf(其他类似,仅改端口)
port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
dir ./
requirepass mypass
masterauth mypass
🖥 脚本:start-all.sh
#!/bin/bashfor port in {7000..7005}
domkdir -p data/${port}redis-server redis-${port}.conf &
done
⚙️ 脚本:create-cluster.sh
#!/bin/bashecho "yes" | 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 \-a mypass
✅ 运行方式(Linux 或 Mac)
chmod +x *.sh
./start-all.sh
./create-cluster.sh
🔚 总结
项目 | 实用场景 |
---|---|
Redisson 分布式锁 | 秒杀、单用户限流、定时任务等 |
Redis Cluster 自动部署脚本 | 快速搭建本地 3主3从高可用集群 |