下面给你一份**适用于 Anolis OS 8.6 / x86_64 / 源码包 redis-8.6.1.tar.gz** 的**标准安装文档**,包含: - 安装编译依赖 - 源码编译安装 - 创建专用运行用户 - 配置目录与日志目录 - 设置 Redis 密码 - 配置 systemd 开机自启 - 启动、验证、常用维护命令 我按**生产环境标准化安装方式**写,你可以直接照着执行。 --- # 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 ``` ``` /usr/local/redis/bin/redis-cli -a '5sTb7fHFbsYl6KmI6pvC^XMw!7Y^Pbc1' MODULE LIST /usr/local/redis/bin/redis-cli -a '5sTb7fHFbsYl6KmI6pvC^XMw!7Y^Pbc1' FT._LIST /usr/local/redis/bin/redis-cli -a '5sTb7fHFbsYl6KmI6pvC^XMw!7Y^Pbc1' INFO server AUTH 5sTb7fHFbsYl6KmI6pvC^XMw!7Y^Pbc1 ``` 例如: ```conf requirepass Redis@2025#Strong ``` > 这是你最关心的“设置密码”方式,客户端连接时必须认证。 --- ## 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 ``` --- 如果你愿意,我还可以继续给你补两份内容之一: 1. **一份可直接执行的自动化安装脚本 install_redis_8.6.1.sh** 2. **一份更严格的生产环境配置版(限制 IP、ACL 用户、systemd 安全加固、日志轮转)** 如果你要,我可以直接继续输出。