Redis 8.2.6 部署

Linux   2026-05-19 19:10   11   0  

1. 准备环境

yum -y install gcc gcc-c++

2. 解压编译

cd /root
tar -xzf redis-8.2.6.tar.gz
cd redis-8.2.6
make -j$(nproc)

3. 安装到目标目录

mv /root/redis-8.2.6 /usr/local/redis

4. 创建用户和组

groupadd -g 6379 redis
useradd -u 6379 -g redis -s /sbin/nologin -M redis

5. 创建目录结构

mkdir -p /usr/local/redis/{conf,data,log,run}
chown -R redis:redis /usr/local/redis

6. 部署配置文件

# -------------------- 网络配置 --------------------
# 绑定地址:监听本机回环和内网IP,不暴露公网
bind 127.0.0.1 172.30.30.6

# 端口:Redis 默认端口
port 6379

# -------------------- 进程配置 --------------------
# 守护进程:yes=后台运行,no=前台运行
daemonize yes

# PID文件:记录进程ID
pidfile /usr/local/redis/run/redis.pid

# -------------------- 目录配置 --------------------
# 数据目录:RDB和AOF文件存放位置
dir /usr/local/redis/data

# 日志级别:debug < verbose < notice < warning
loglevel notice

# 日志文件:运行日志路径
logfile /usr/local/redis/log/redis.log

# -------------------- 密码认证 --------------------
# 设置访问密码
requirepass qwe123.0

# -------------------- 内存配置 --------------------
# 最大内��:8G * 25% = 2GB,留给MongoDB等其它服务
maxmemory 2gb

# 内存淘汰策略:内存满时淘汰最近最少使用的key
# allkeys-lru: 对所有key进行LRU淘汰
maxmemory-policy allkeys-lru

# -------------------- 连接配置 --------------------
# 客户端超时:空闲300秒(5分钟)后断开连接
timeout 300

# TCP保活:检测连接是否存活,每60秒发送探测包
tcp-keepalive 60

# 最大客户端数:2000并发 * 2倍冗余 = 4000
maxclients 4000

# -------------------- 持久化配置 - RDB --------------------
# RDB触发条件:满足任一条件则触发快照
# 900秒内至少1次写操作
save 900 1
# 300秒内至少10次写操作
save 300 10
# 60秒内至少10000次写操作
save 60 10000

# RDB文件名:快照文件名称
dbfilename dump.rdb

# -------------------- 持久化配置 - AOF --------------------
# 启用AOF:append-only file,追加命令日志
appendonly yes

# AOF刷盘策略:everysec=每秒同步(推荐,平衡性能与安全)
# always=每次写入同步(最安全但慢),no=由操作系统决定(最快但不安全)
appendfsync everysec

# AOF重写触发:文件大小比上次重写时大100%时触发
auto-aof-rewrite-percentage 100

# AOF重写最小大小:至少64MB才触发重写,避免频繁重写
auto-aof-rewrite-min-size 64mb

# -------------------- 慢查询日志 --------------------
# 慢查询阈值:执行时间超过10000微秒(10ms)记录到慢日志
slowlog-log-slower-than 10000

# 慢日志最大条数:保留最近128条慢查询
slowlog-max-len 128

# -------------------- 客户端输出缓冲区限制 --------------------
# normal: 普通客户端无限制
client-output-buffer-limit normal 0 0 0

# replica: 从节点客户端,硬限制256MB,软限制64MB,超时60秒断开
client-output-buffer-limit replica 256mb 64mb 60

# pubsub: 发布订阅客户端,硬限制32MB,软限制8MB,超时60秒断开
client-output-buffer-limit pubsub 32mb 8mb 60

# -------------------- 内存碎片优化 --------------------
# 启用主动碎片整理:自动合并碎片页面
activedefrag yes

# 碎片大小阈值:超过150MB才开始整理
active-defrag-ignore-bytes 150mb

# 碎片率下限:碎片率超过10%开始整理
active-defrag-threshold-lower 10

# 碎片率上限:碎片率超过100%强制立即整理
active-defrag-threshold-upper 100

# 最小CPU占用:整理时最少占用1% CPU
active-defrag-cycle-min 1

# 最大CPU占用:整理时最多占用25% CPU
active-defrag-cycle-max 25

# -------------------- 安全配置 --------------------
# 禁用危险命令:防止误操作清空数据或破坏系统
# 设为空字符串即禁用该命令
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command DEBUG ""
rename-command CONFIG ""
rename-command SHUTDOWN ""

7. 系统优化

# 内核参数
echo "vm.overcommit_memory=1" >> /etc/sysctl.d/99-redos.conf
sysctl -p /etc/sysctl.d/99-redis.conf

# 文件描述符
cat > /etc/security/limits.d/99-redis.conf << 'EOF'
redis soft nofile 65535
redis hard nofile 65535
redis soft nproc 65535
redis hard nproc 65535
EOF

8. 配置 systemd 服务

cat > /etc/systemd/system/redis.service << 'EOF'
[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
Type=forking
User=redis
Group=redis
ExecStart=/usr/local/redis/src/redis-server /usr/local/redis/conf/redis.conf
ExecStop=/bin/kill -SIGTERM $(cat /usr/local/redis/run/redis.pid)
Restart=always
RestartSec=5
LimitNOFILE=65535
LimitNPROC=65535
PIDFile=/usr/local/redis/run/redis.pid

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable redis

9. 启动并验证

systemctl start redis
redis-cli ping
# 期望输出: PONG

4C8G 调优参数


参数说明
maxmemory2gb8G内存的25%
maxmemory-policyallkeys-lru内存满时淘汰最久未使用的key
maxclients40002000并发 × 2倍冗余
appendfsynceverysec每秒刷盘
activedefragyes内存碎片自动整理
slowlog-log-slower-than1000010ms以上记慢查询


下一篇
没有了
博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。