1774110743

This commit is contained in:
Docker7530
2026-03-22 00:32:26 +08:00
parent 12d823bfc5
commit 7ab924d668
18 changed files with 915 additions and 229 deletions
@@ -0,0 +1,787 @@
# Redis 8.6.1 标准安装文档
适用系统:**Anolis OS 8.6 x86_64**
---
# 1. 安装规划
本安装文档采用如下标准目录:
| 项目 | 路径 |
| ---------- | ------------------------ |
| 安装包目录 | `/usr/local/src` |
| Redis 安装目录 | `/usr/local/redis-8.6.1` |
| 软链接 | `/usr/local/redis` |
| 配置目录 | `/etc/redis` |
| 数据目录 | `/data/redis` |
| 日志目录 | `/var/log/redis` |
| 运行用户 | `redis` |
| 服务名 | `redis` |
| 监听端口 | `6379` |
---
# 2. 前置准备
## 2.1 切换 root 用户
```bash
sudo -i
```
## 2.2 关闭或放通防火墙端口(如有需要)
如果 Redis 仅本机访问,可以不开放 6379。
若需要远程访问:
```bash
firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --reload
```
查看:
```bash
firewall-cmd --list-ports
```
---
# 3. 安装编译依赖
Anolis OS 8.6 与 RHEL/CentOS 8 系兼容,可使用 `dnf`
```bash
dnf -y install gcc gcc-c++ make tar wget perl systemd-devel
```
建议再安装常用工具:
```bash
dnf -y install vim net-tools lsof
```
验证 gcc
```bash
gcc --version
make --version
```
---
# 4. 上传并解压安装包
假设你已经将 `redis-8.6.1.tar.gz` 上传到 `/usr/local/src/`
```bash
cd /usr/local/src
ls -lh redis-8.6.1.tar.gz
```
解压:
```bash
tar -xzf redis-8.6.1.tar.gz
cd redis-8.6.1
```
---
# 5. 编译 Redis
执行编译:
```bash
make -j$(nproc)
```
安装到指定目录:
```bash
make PREFIX=/usr/local/redis-8.6.1 install
```
创建软链接:
```bash
ln -sfn /usr/local/redis-8.6.1 /usr/local/redis
```
验证:
```bash
/usr/local/redis/bin/redis-server -v
/usr/local/redis/bin/redis-cli -v
```
---
# 6. 创建运行用户和目录
## 6.1 创建 redis 用户
```bash
id redis >/dev/null 2>&1 || useradd -r -s /sbin/nologin redis
```
## 6.2 创建配置、数据、日志目录
```bash
mkdir -p /etc/redis
mkdir -p /data/redis
mkdir -p /var/log/redis
```
## 6.3 设置权限
```bash
chown -R redis:redis /data/redis
chown -R redis:redis /var/log/redis
```
---
# 7. 生成 Redis 配置文件
从源码目录复制默认配置:
```bash
cp /usr/local/src/redis-8.6.1/redis.conf /etc/redis/redis.conf
```
备份一份:
```bash
cp /etc/redis/redis.conf /etc/redis/redis.conf.bak
```
---
# 8. 修改 Redis 配置
编辑配置文件:
```bash
vim /etc/redis/redis.conf
```
建议修改为以下关键项。
---
## 8.1 基础配置
找到并修改:
```conf
bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised systemd
pidfile /var/run/redis_6379.pid
loglevel notice
logfile /var/log/redis/redis.log
databases 16
```
说明:
- `bind 0.0.0.0`:允许所有地址访问
如果你只允许本机访问,建议改成:
```conf
bind 127.0.0.1
```
- `protected-mode yes`:建议保持开启
- `daemonize no`:使用 systemd 启动时必须为 `no`
- `supervised systemd`:推荐 systemd 管理
---
## 8.2 数据目录配置
修改:
```conf
dir /data/redis
dbfilename dump.rdb
```
---
## 8.3 设置密码
### 方法一:兼容常见方式,使用 `requirepass`
在配置文件中加入或修改:
```conf
requirepass 5sTb7fHFbsYl6KmI6pvC^XMw!7Y^Pbc1
```
> 这是你最关心的“设置密码”方式,客户端连接时必须认证。
---
## 8.4 建议配置 master 默认认证密码
有些版本推荐 ACL 方式,生产上也可以同时设置默认用户密码:
```conf
aclfile /etc/redis/users.acl
```
然后创建 ACL 文件:
```bash
cat >/etc/redis/users.acl <<'EOF'
user default on >Redis@2025#Strong ~* &* +@all
EOF
```
设置权限:
```bash
chown redis:redis /etc/redis/users.acl
chmod 640 /etc/redis/users.acl
```
> 如果你使用了 ACL 文件,推荐**不要同时混乱使用多套密码策略**。
> 对于标准简单部署:
> - **只用 `requirepass`** 就够了
> - 如果你明确要 ACL 管理,就用 `aclfile`
---
## 8.5 持久化建议
### RDB 快照
建议保留:
```conf
save 900 1
save 300 10
save 60 10000
```
### AOF
建议开启:
```conf
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
```
---
## 8.6 内存策略建议
根据你的机器规格(8 vCPU,通常中小型实例),如果 Redis 不是独占整机,建议先限制最大内存。
例如:
```conf
maxmemory 2gb
maxmemory-policy allkeys-lru
```
> 如果这台机器专门跑 Redis,可按实际内存再调整。
> 你没有提供内存大小,所以文档里给一个稳妥示例值。
---
# 9. 配置文件示例(可直接替换)
下面是一份可直接使用的 `/etc/redis/redis.conf` 核心示例:
```conf
bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised systemd
pidfile /var/run/redis_6379.pid
loglevel notice
logfile /var/log/redis/redis.log
databases 16
dir /data/redis
dbfilename dump.rdb
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
requirepass Redis@2025#Strong
maxmemory 2gb
maxmemory-policy allkeys-lru
```
> 请把密码 `Redis@2025#Strong` 改成你自己的强密码。
---
# 10. 配置 systemd 服务
创建 systemd 服务文件:
```bash
cat >/etc/systemd/system/redis.service <<'EOF'
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/local/redis/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/redis/bin/redis-cli -a '5sTb7fHFbsYl6KmI6pvC^XMw!7Y^Pbc1' shutdown
Type=notify
TimeoutStopSec=30
Restart=always
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
```
> 注意:这里 `ExecStop` 中的密码要和 `redis.conf` 的 `requirepass` 一致。
> 如果你修改了密码,这里也要同步修改。
---
# 11. 系统内核参数优化
生产环境建议设置 `vm.overcommit_memory`。
临时生效:
```bash
sysctl vm.overcommit_memory=1
```
永久生效:
```bash
echo 'vm.overcommit_memory = 1' >/etc/sysctl.d/99-redis.conf
sysctl --system
```
关闭透明大页(建议):
临时关闭:
```bash
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
```
如需开机自动关闭,可写入 rc.local 或 systemd 脚本。
---
# 12. 启动 Redis
重新加载 systemd
```bash
systemctl daemon-reload
```
设置开机自启:
```bash
systemctl enable redis
```
启动服务:
```bash
systemctl start redis
```
查看状态:
```bash
systemctl status redis --no-pager -l
```
---
# 13. 验证安装和密码
## 13.1 查看监听端口
```bash
ss -lntp | grep 6379
```
## 13.2 本地连接测试
```bash
/usr/local/redis/bin/redis-cli
```
执行:
```bash
ping
```
如果设置了密码,会返回:
```text
(error) NOAUTH Authentication required.
```
认证:
```bash
auth Redis@2025#Strong
```
再执行:
```bash
ping
```
返回:
```text
PONG
```
---
## 13.3 一条命令带密码连接
```bash
/usr/local/redis/bin/redis-cli -a 'Redis@2025#Strong'
```
测试:
```bash
set test hello
get test
```
---
# 14. 设置环境变量(可选)
为了直接使用 `redis-cli`、`redis-server` 命令:
```bash
cat >/etc/profile.d/redis.sh <<'EOF'
export PATH=/usr/local/redis/bin:$PATH
EOF
source /etc/profile.d/redis.sh
```
验证:
```bash
redis-cli -v
redis-server -v
```
---
# 15. 常用运维命令
## 启动
```bash
systemctl start redis
```
## 停止
```bash
systemctl stop redis
```
## 重启
```bash
systemctl restart redis
```
## 查看状态
```bash
systemctl status redis
```
## 查看日志
```bash
tail -f /var/log/redis/redis.log
```
## 登录 Redis
```bash
redis-cli -a 'Redis@2025#Strong'
```
## 查看配置
```bash
redis-cli -a 'Redis@2025#Strong' CONFIG GET requirepass
redis-cli -a 'Redis@2025#Strong' INFO
```
---
# 16. 修改 Redis 密码的方法
如果后续要改密码,有两种方式。
---
## 方法一:修改配置文件后重启
编辑:
```bash
vim /etc/redis/redis.conf
```
修改:
```conf
requirepass NewStrongPassword@456
```
然后同步修改 systemd 文件里的 `ExecStop` 密码:
```bash
vim /etc/systemd/system/redis.service
```
修改:
```conf
ExecStop=/usr/local/redis/bin/redis-cli -a 'NewStrongPassword@456' shutdown
```
重载并重启:
```bash
systemctl daemon-reload
systemctl restart redis
```
---
## 方法二:运行时修改(临时 + 持久化)
先认证登录:
```bash
redis-cli -a '旧密码'
```
执行:
```bash
CONFIG SET requirepass NewStrongPassword@456
CONFIG REWRITE
```
> 如果你用了 ACL,密码修改方式会不同。
---
# 17. 卸载方法
停止服务:
```bash
systemctl stop redis
systemctl disable redis
```
删除服务文件:
```bash
rm -f /etc/systemd/system/redis.service
systemctl daemon-reload
```
删除安装目录:
```bash
rm -rf /usr/local/redis-8.6.1
rm -f /usr/local/redis
```
删除配置和数据(谨慎):
```bash
rm -rf /etc/redis
rm -rf /data/redis
rm -rf /var/log/redis
```
删除用户:
```bash
userdel redis
```
---
# 18. 推荐的密码规范
建议 Redis 密码满足:
- 长度不少于 16 位
- 包含:
- 大写字母
- 小写字母
- 数字
- 特殊字符
- 不使用弱密码,如:
- `123456`
- `redis123`
- `admin@123`
示例强密码:
```text
Rds@8.6.1_2025#X9pL
```
---
# 19. 最简安装命令汇总版
如果你想快速执行,下面是精简版流程。
## 19.1 安装依赖
```bash
dnf -y install gcc gcc-c++ make tar wget perl vim net-tools lsof
```
## 19.2 编译安装
```bash
cd /usr/local/src
tar -xzf redis-8.6.1.tar.gz
cd redis-8.6.1
make -j$(nproc)
make PREFIX=/usr/local/redis-8.6.1 install
ln -sfn /usr/local/redis-8.6.1 /usr/local/redis
```
## 19.3 创建用户和目录
```bash
useradd -r -s /sbin/nologin redis
mkdir -p /etc/redis /data/redis /var/log/redis
chown -R redis:redis /data/redis /var/log/redis
cp /usr/local/src/redis-8.6.1/redis.conf /etc/redis/redis.conf
```
## 19.4 修改配置
```bash
cat >/etc/redis/redis.conf <<'EOF'
bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised systemd
pidfile /var/run/redis_6379.pid
loglevel notice
logfile /var/log/redis/redis.log
databases 16
dir /data/redis
dbfilename dump.rdb
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
requirepass Rds@8.6.1_2025#X9pL
maxmemory 2gb
maxmemory-policy allkeys-lru
EOF
```
## 19.5 systemd
```bash
cat >/etc/systemd/system/redis.service <<'EOF'
[Unit]
Description=Redis In-Memory Data Store
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/local/redis/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/redis/bin/redis-cli -a 'Rds@8.6.1_2025#X9pL' shutdown
Type=notify
Restart=always
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
```
## 19.6 启动
```bash
echo 'vm.overcommit_memory = 1' >/etc/sysctl.d/99-redis.conf
sysctl --system
systemctl daemon-reload
systemctl enable redis
systemctl start redis
systemctl status redis --no-pager -l
```
## 19.7 测试
```bash
/usr/local/redis/bin/redis-cli -a 'Rds@8.6.1_2025#X9pL' ping
```
返回:
```text
PONG
```