788 lines
11 KiB
Markdown
788 lines
11 KiB
Markdown
# 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
|
||
```
|