Redis 服务器(Server)完全攻略
“Redis 大脑” —— 掌握服务器管理、性能监控、安全加固、故障排查,打造 99.99% 可用 的 Redis 集群!
一、Redis 服务器核心概念
概念 说明 单线程模型 事件驱动 (I/O 多路复用),无锁竞争内存数据库 数据主要在内存,RDB/AOF 持久化 主从复制 异步复制,读写分离 高可用 Sentinel / Cluster 集群模式 分片 + 故障转移
二、服务器管理命令全表
命令 说明 示例 INFO [section]服务器信息 INFO serverCONFIG GET *获取配置 CONFIG GET maxmemoryCONFIG SET param value动态设置 CONFIG SET maxmemory 2gbSLOWLOG GET [n]慢查询日志 SLOWLOG GET 10SLOWLOG LEN慢查询数量 SLOWLOG LENSLOWLOG RESET清空慢查询 SLOWLOG RESETDBSIZE当前 DB key 数量 DBSIZEFLUSHDB清空当前 DB FLUSHDBFLUSHALL清空所有 DB FLUSHALLSHUTDOWN [SAVE|NOSAVE]关机 SHUTDOWN SAVEMONITOR实时命令监控 MONITORCLIENT LIST客户端列表 CLIENT LISTMEMORY USAGE keykey 内存占用 MEMORY USAGE user:1MEMORY DOCTOR内存诊断 MEMORY DOCTORLATENCY DOCTOR延迟诊断 LATENCY DOCTOR
三、INFO 命令详解(重点监控项)
INFO all
关键 section
Section 关键指标 说明 serverredis_version, uptime_in_seconds版本、运行时间 clientsconnected_clients, blocked_clients连接数 memoryused_memory, used_memory_rss, mem_fragmentation_ratio内存使用 persistencerdb_last_save_time, aof_enabled持久化状态 statsinstantaneous_ops_per_sec, keyspace_hitsQPS、命中率 replicationrole, connected_slaves主从状态 cpuused_cpu_sys, used_cpu_userCPU 占用
四、服务器配置(redis.conf)核心项
# 基础
bind 0.0.0.0
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
# 安全
requirepass your_strong_password
rename-command FLUSHALL ""
rename-command CONFIG "CONFIG_PROD"
# 内存
maxmemory 2gb
maxmemory-policy allkeys-lru
# 持久化
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfsync everysec
# 客户端
maxclients 10000
timeout 300
tcp-keepalive 60
# 慢查询
slowlog-log-slower-than 10000 # 10ms
slowlog-max-len 128
# 高级
hz 10
repl-backlog-size 1gb
五、服务器性能监控(Prometheus + Grafana)
核心指标
# prometheus.yml
- job_name: 'redis'
static_configs:
- targets: ['localhost:9121'] # redis_exporter
关键指标
指标 说明 告警阈值 redis_connected_clients连接数 > 8000 redis_used_memory内存使用 > 80% redis_mem_fragmentation_ratio内存碎片率 > 1.5 redis_instantaneous_ops_per_secQPS 突增 redis_keyspace_hits_ratio命中率 < 90% redis_rejected_connections拒绝连接 > 0
六、服务器安全加固
1. 密码 + 认证
requirepass xAI_2025_Secure_Redis!
redis-cli -a xAI_2025_Secure_Redis! PING
2. 禁用危险命令
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command SHUTDOWN "SHUTDOWN_PROD"
rename-command CONFIG ""
3. 网络隔离
bind 10.0.0.10
protected-mode yes
4. TLS 加密(Redis 6.0+)
tls-port 6380
tls-cert-file /etc/redis/redis.crt
tls-key-file /etc/redis/redis.key
tls-ca-cert-file /etc/redis/ca.crt
七、服务器故障排查
1. 内存暴涨
# 排查大 key
redis-cli --bigkeys
# 内存诊断
redis-cli MEMORY DOCTOR
2. 响应延迟
# 慢查询
SLOWLOG GET 10
# 延迟诊断
LATENCY DOCTOR
3. 连接拒绝
INFO clients
# rejected_connections > 0
# 检查 maxclients
CONFIG GET maxclients
4. 主从不同步
INFO replication
# master_repl_offset vs slave_repl_offset
八、服务器运维脚本
1. 自动清理过期 key
#!/bin/bash
redis-cli --scan --pattern "tmp:*" | xargs -r redis-cli del
2. 内存预警脚本
#!/bin/bash
USED=$(redis-cli INFO memory | grep used_memory: | awk -F: '{print $2}' | tr -d '\r')
MAX=$(redis-cli CONFIG GET maxmemory | awk 'NR==2')
if [ $USED -gt $((MAX * 8 / 10)) ]; then
echo "内存告警: $USED / $MAX"
fi
3. 备份脚本
#!/bin/bash
DATE=$(date +%Y%m%d)
cp /var/lib/redis/dump.rdb /backup/redis_$DATE.rdb
# 上传 OSS
九、一键速查表
# 服务器状态
INFO all
INFO memory
INFO stats
# 配置管理
CONFIG GET maxmemory
CONFIG SET maxmemory 4gb
# 慢查询
SLOWLOG GET 5
SLOWLOG LEN
# 内存
MEMORY USAGE key
MEMORY DOCTOR
redis-cli --bigkeys
# 客户端
CLIENT LIST | wc -l
CLIENT KILL 127.0.0.1:54321
# 关机
SHUTDOWN SAVE
十、生产级服务器架构
graph TD
A[应用] --> B[Redis Proxy]
B --> C[Sentinel HA]
C --> D[Master]
C --> E[Slave]
C --> F[Slave]
G[Backup] --> D
H[Monitor] --> D
H --> E
H --> F
推荐组件:
Proxy :redis-cluster-proxy / twemproxy
HA :Redis Sentinel
监控 :Prometheus + Redis Exporter + Grafana
备份 :RDB + AOF + 异地备份
十一、Redis 7.4 新特性(2025 最新)
特性 说明 ZMPOP原子弹出多个成员 LCS最长公共子序列 EXPIRE ... NX|XX条件过期 CLIENT PAUSE WRITE暂停写 MEMORY STATS详细内存统计
完成!你已精通 Redis 服务器!
# 一行命令获取服务器健康状态
redis-cli INFO | grep -E "redis_version|uptime|connected_clients|used_memory|instantaneous_ops_per_sec"
下一步推荐 :
Redis Sentinel 高可用
Redis Cluster 集群搭建
Redis 性能压测与调优
需要我送你 :
“生产级 redis.conf 模板(64GB 内存,10万 QPS)” ?
“Redis 监控告警全套配置(Grafana + Alertmanager)” ?
“Redis 故障演练手册(主从切换、内存爆)” ?
回复:conf模板 | 监控告警 | 故障演练 即可!