加群联系作者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 10000
appendonly 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/redis
tar -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.0
port 6379
dir /var/lib/redis
logfile /var/log/redis/redis.log
# 建议持久化策略
save 900 1
save 300 10
maxmemory 8gb
maxmemory-policy allkeys-lru
requirepass "Prod#Redis2025!"
appendonly yes
appendfsync 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
EOF
systemctl 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.101
port: 6379
password: mypass
🔹 Sentinel 模式:
spring:
redis:
sentinel:
master: mymaster
nodes:
- 192.168.1.101:26379
- 192.168.1.102:26379
- 192.168.1.103:26379
password: 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:7005
password: mypass
✅ 3. 示例代码(RedisTemplate)
@Service
public class RedisService {
@Autowired
private 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:6379
password: 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:7002
password: mypass
也可以在 Java 中用
Config
构造。
✅ 3. 分布式锁使用示例(推荐写法)
@Service
public class LockService {
@Autowired
private 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/bash
for port in {7000..7005}
do
mkdir -p data/${port}
redis-server redis-${port}.conf &
done
⚙️ 脚本:create-cluster.sh
#!/bin/bash
echo "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从高可用集群 |