一、前期准备

1.1 环境依赖

Redis 基于 C 语言开发,源码编译安装必须依赖 GCC 编译环境,未安装需提前执行命令安装基础编译依赖:

yum install gcc-c++

1.2 安装包下载

官方下载地址:https://redis.io/download

选择 Stable 稳定版(本文以 redis-6.0.10 为例),下载安装包后,通过远程工具(FinalShell/Xshell 等)将安装包上传至服务器 /usr/local 目录。
在这里插入图片描述

二、Redis 源码安装步骤

2.1 解压安装包

进入上传目录,执行解压命令:

cd /usr/local
tar -xvf redis-6.0.10.tar.gz

2.2 编译源码(解决报错核心步骤)

1. 进入解压后的 Redis 目录,直接执行编译会出现 gcc 未找到、jemalloc 依赖缺失、结构体参数报错 等一系列问题,根源为系统默认 GCC 版本过低,不兼容 Redis6.0+ 编译语法,需先升级高版本编译工具链:

# 进入Redis目录
cd redis-6.0.10

# 安装SCL源及高版本GCC编译工具
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils

# 临时启用gcc9编译环境(当前终端生效)
scl enable devtoolset-9 bash

2. 重新执行编译、安装命令:

# 源码编译
make

# 安装Redis
make install

2.3 规范安装目录结构

安装完成后,手动创建配置目录、脚本目录,规整文件存放位置:

# 在Redis根目录创建文件夹
mkdir bin
mkdir etc

# 将核心配置文件移动到etc目录
mv redis.conf etc/

# 进入src目录,迁移运行脚本到bin目录
cd src
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server ../bin/

三、Redis 核心配置优化

3.1 配置外网访问(bind 参数详解)

进入配置文件目录,编辑 redis.conf 配置外网访问权限:

cd /usr/local/redis-6.0.10/etc
vim redis.conf

输入 /bind 搜索配置项,修改参数:

将默认 bind 127.0.0.1 改为 bind 0.0.0.0

bind 参数核心原理(避坑重点)

很多人对 bind 配置存在认知误区,其并非限制访问IP,而是绑定本机网卡IP

  • bind 127.0.0.1:绑定本机回环网卡,仅服务器本地可连接 Redis,安全性极高,无需密码也不会被外网访问,生产环境推荐配置。

  • bind 0.0.0.0:绑定本机所有网卡,允许所有网段主机访问(需开放服务器6379端口+配置密码),仅测试环境使用。

3.1.1 protected-mode 保护机制详解(核心安全要点)

Redis 自带保护模式是核心安全屏障,仅同时满足以下3个条件才会自动开启,开启后仅本机可访问服务:

1、保护模式开启:protected-mode yes(默认开启);
2、未手动配置 bind 绑定网卡;
3、未设置 Redis 登录密码。

任意一个条件不满足,保护模式自动失效。因此测试环境开启外网访问(bind 0.0.0.0)后,必须配置密码,避免裸奔暴露公网,引发数据泄露、恶意入侵风险。

若需精准限制指定IP访问,不能通过 bind 实现,需借助服务器防火墙/安全组策略限制6379端口访问权限。

详细原理参考:Redis bind 参数深度解析

3.2 设置后台运行

继续编辑 redis.conf,输入 /daemonize 搜索,修改配置:

daemonize no 改为 daemonize yes,设置 Redis 后台常驻运行。

3.3 设置登录密码

输入 /requirepass 搜索密码配置,取消注释,设置自定义密码:

修改为:requirepass 自定义密码

四、Redis 启动与连接测试

4.1 启动 Redis 服务

cd /usr/local/redis-6.0.10/bin
redis-server ../etc/redis.conf

4.2 客户端连接 Redis

# 远程连接格式:redis-cli -h 服务器IP -p 端口
redis-cli -h 10.0.0.10 -p 6379

# 输入密码认证
auth 自定义密码

4.3 清空数据(慎用!)

测试环境如需清空所有 Redis 缓存数据,执行以下命令,生产环境禁止随意使用**,清空后数据无法恢复**:

FLUSHALL

五、常见报错解决方案(SCL源失效)

5.1 报错信息

执行 yum install devtoolset-9 时报错:

Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64

Could not resolve host: mirrorlist.centos.org

5.2 报错原因

CentOS 7 官方 SCL 源已于 2024年6月30日停止维护,默认官方镜像地址无法访问,需替换为阿里云镜像源。

5.3 完整解决步骤

# 1. 进入yum源配置目录
cd /etc/yum.repos.d/

# 2. 备份原有失效的SCL源文件
mv CentOS-SCLo-scl.repo CentOS-SCLo-scl.repo.bak
mv CentOS-SCLo-scl-rh.repo CentOS-SCLo-scl-rh.repo.bak

# 3. 新建阿里云SCL源配置文件
vim CentOS-SCLo-rh.repo

粘贴以下完整配置内容并保存退出:

[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

4. 清理缓存并重新执行编译工具安装命令即可正常使用。

5.4 启动后内核警告修复(可选优化)

Redis 启动后会出现两个常见内核警告,长期运行会影响性能、导致持久化失败,建议永久修复:

警告1:overcommit_memory 内存参数异常
问题:低内存场景下Redis后台持久化可能失败
临时修复(立即生效):sysctl vm.overcommit_memory=1
永久修复:编辑 /etc/sysctl.conf,添加 vm.overcommit_memory = 1,执行 sysctl -p 生效

警告2:透明大页THP开启
问题:会造成Redis延迟波动、内存占用异常
临时修复(立即生效):echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
永久修复:将上述命令写入 /etc/rc.local,开机自动执行,重启Redis生效

问题参考文档:SCL源失效修复方案

详细安装排坑参考:Redis 安装全坑解决方案

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐