CentOS 下源码编译安装完整版 Redis 8.0 指南(附 Rust 工具链详解)

CentOS 下源码编译安装完整版 Redis 8.0 指南

前言

Redis 是目前最流行的内存数据结构服务器,被广泛应用于缓存、会话存储、消息队列、实时分析等场景。本文基于 Redis 官方 README 中的构建文档,详细介绍在 CentOS(及 RHEL 系发行版)下如何从源码编译安装包含所有数据结构的完整版 Redis,并解释为什么现在编译 Redis 需要 Rust 工具链。

注意:由于 CentOS Linux 已停止维护,推荐使用 Rocky Linux 或 AlmaLinux 作为替代,它们与 RHEL 完全兼容。本文中的步骤在这两个发行版上验证通过。

一、为什么需要编译安装完整版 Redis

Redis 提供了丰富的数据结构,但默认编译可能只包含核心功能。通过设置 BUILD_WITH_MODULES=yes,你可以启用以下高级数据结构:

  • JSON:支持 JSON 文档的存储、索引和查询
  • Bloom Filter / Cuckoo Filter:概率数据结构,用于去重、过滤场景
  • Time Series:时序数据存储
  • Top-K:数据流中 Top-K 频繁项查询
  • Count-Min Sketch:频率估计
  • t-digest:百分位数估计
  • Redis Query Engine:向量化搜索、全文搜索、地理空间查询

这些功能在官方预编译版本或 yum/apt 安装的版本中通常不包含,需要手动编译。

二、环境准备

2.1 系统要求

  • Rocky Linux 8.10+ 或 AlmaLinux 8.10+ 或兼容的 RHEL 系系统
  • 建议 2GB+ 内存
  • 至少 10GB 可用磁盘空间

2.2 安装基础依赖

bash 复制代码
# 清理缓存并配置仓库
sudo dnf clean all
sudo tee /etc/yum.repos.d/goreleaser.repo > /dev/null <<EOF
[goreleaser]
name=GoReleaser
baseurl=https://repo.goreleaser.com/yum/
enabled=1
gpgcheck=0
EOF

# 更新系统并安装开发工具
sudo dnf update -y
sudo dnf groupinstall "Development Tools" -y
sudo dnf config-manager --set-enabled powertools
sudo dnf install -y epel-release

2.3 安装编译依赖

bash 复制代码
# 安装 Redis 编译所需的依赖包
sudo dnf install -y --nobest --skip-broken \
    pkg-config \
    wget \
    gcc-toolset-13-gcc \
    gcc-toolset-13-gcc-c++ \
    git \
    make \
    openssl \
    openssl-devel \
    python3 \
    python3-pip \
    python3-devel \
    unzip \
    rsync \
    clang \
    curl \
    libtool \
    automake \
    autoconf \
    jq \
    systemd-devel

2.4 配置 Python 虚拟环境

bash 复制代码
python3 -m venv /opt/venv

2.5 启用 GCC 13 工具链

Redis 8.0 需要较新版本的 GCC,CentOS/RHEL 默认的 GCC 版本过低:

bash 复制代码
sudo cp /opt/rh/gcc-toolset-13/enable /etc/profile.d/gcc-toolset-13.sh
echo "source /etc/profile.d/gcc-toolset-13.sh" | sudo tee -a /etc/bashrc

2.6 安装 CMake

Redis 8.0 官方要求 CMake 3.25.1,不支持更高版本:

bash 复制代码
CMAKE_VERSION=3.25.1
ARCH=$(uname -m)
if [ "$ARCH" = "x86_64" ]; then
    CMAKE_FILE=cmake-${CMAKE_VERSION}-linux-x86_64.sh
else
    CMAKE_FILE=cmake-${CMAKE_VERSION}-linux-aarch64.sh
fi

wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_FILE}
chmod +x ${CMAKE_FILE}
sudo ./${CMAKE_FILE} --skip-license --prefix=/usr/local --exclude-subdir
rm ${CMAKE_FILE}
cmake --version

三、下载并编译 Redis

3.1 下载源码

bash 复制代码
# 创建源码目录
sudo mkdir -p /usr/src
cd /usr/src

# 下载 Redis 8.0 源码(以 8.0.0 为例,可替换为其他版本)
sudo wget -O redis-8.0.0.tar.gz https://github.com/redis/redis/archive/refs/tags/8.0.0.tar.gz

# 解压
sudo tar xvf redis-8.0.0.tar.gz
sudo rm redis-8.0.0.tar.gz

3.2 编译安装

这是关键步骤!设置以下环境变量来启用完整功能:

bash 复制代码
# 激活 GCC 工具链
source /etc/profile.d/gcc-toolset-13.sh

# 进入源码目录
cd /usr/src/redis-8.0.0

# 设置编译选项
# BUILD_TLS=yes      - 启用 TLS 支持
# BUILD_WITH_MODULES=yes - 编译所有模块(JSON、Bloom Filter 等)
# INSTALL_RUST_TOOLCHAIN=yes - 自动安装 Rust 工具链(编译模块必需)
# DISABLE_WERRORS=yes - 禁用警告转错误,避免编译被无关警告中断
export BUILD_TLS=yes BUILD_WITH_MODULES=yes INSTALL_RUST_TOOLCHAIN=yes DISABLE_WERRORS=yes

# 编译(使用所有 CPU 核心加速)
make -j "$(nproc)" all

编译过程可能需要 10-30 分钟,取决于机器配置。

3.3 安装

bash 复制代码
sudo make install

这会将 Redis 可执行文件安装到 /usr/local/bin/

四、启动 Redis

4.1 快速启动

bash 复制代码
cd /usr/src/redis-8.0.0
./src/redis-server redis-full.conf

4.2 后台运行

bash 复制代码
./src/redis-server redis-full.conf --daemonize yes

4.3 验证安装

bash 复制代码
# 连接 Redis
redis-cli ping

# 应该返回:PONG

# 查看版本
redis-cli INFO server | grep redis_version

4.4 验证模块加载

bash 复制代码
# 查看已加载的模块
redis-cli INFO modules

# 测试 JSON 功能
redis-cli JSON.SET mydoc '$' '{"name":"Redis","version":8.0,"features":["JSON","Search","Vectors"]}'
redis-cli JSON.GET mydoc

五、为什么编译完整版 Redis 需要 Rust 工具链

这是很多开发者困惑的地方。让我解释清楚:

5.1 Redis 的模块化架构

Redis 从 7.0 开始引入了模块系统,允许用 C 语言之外的语言编写扩展模块。官方提供的高级数据结构模块(如 RedisJSON、RedisSearch)需要更高效的内存管理和并发处理能力。

5.2 为什么选择 Rust

Rust 相比 C 的优势:

特性 C Rust
内存安全 手动管理,容易出错 编译时保证内存安全
并发安全 线程安全问题频发 所有权系统保证线程安全
性能 极高 与 C 相当
包管理 手动 现代化的 Cargo 生态

Redis 的模块(如 RedisJSON)需要解析复杂的 JSON 文档、执行向量相似性搜索等计算密集型任务。Rust 能在保证内存安全的同时提供与 C 相当的性能,是这些场景的理想选择。

5.3 INSTALL_RUST_TOOLCHAIN=yes 的作用

当你设置这个环境变量时,Redis 的 Makefile 会:

  1. 检查系统是否已安装 Rust 工具链(rustccargo
  2. 如果没有,自动下载并安装 Rust 工具链到 deps/rust/ 目录
  3. 使用 Cargo 编译 Rust 依赖模块
  4. 将编译好的模块链接到 Redis 主程序

5.4 需要 Rust 模块的功能

以下 Redis 高级功能依赖 Rust:

  • RedisJSON:JSON 文档存储和查询
  • RedisSearch:全文搜索和聚合
  • RedisJSONRedisSearch 的组合(JSON 文档索引)
  • 向量相似度搜索(Redis Stack 中的一部分)

如果你不需要这些功能,可以设置 BUILD_WITH_MODULES=no,这样就不需要 Rust 工具链:

bash 复制代码
# 仅编译核心功能,不需要 Rust
make -j "$(nproc)" all

六、常见问题

Q1: 编译报错 "cc: command not found"

确保已启用 gcc-toolset-13:

bash 复制代码
source /etc/profile.d/gcc-toolset-13.sh

Q2: CMake 版本不对

Redis 8.0 要求 CMake 3.25.1,更高版本会导致构建失败:

bash 复制代码
cmake --version  # 确认为 3.25.1

Q3: Rust 工具链下载失败

可以手动安装 Rust 后再编译:

bash 复制代码
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

然后编译时使用:

bash 复制代码
export INSTALL_RUST_TOOLCHAIN=no  # 跳过自动安装
make -j "$(nproc)" all

Q4: 如何查看 Redis 支持哪些模块

bash 复制代码
redis-cli INFO modules

七、总结

通过源码编译安装 Redis 8.0 完整版,虽然步骤较多,但能获得:

  • ✅ 所有高级数据结构支持(JSON、Bloom Filter、Time Series 等)
  • ✅ Redis Query Engine(向量搜索、全文搜索)
  • ✅ TLS 加密连接支持
  • ✅ 更好的性能和定制能力

Rust 工具链是 Redis 模块化战略的重要组成部分,确保了高级功能的内存安全和性能。如果你的生产环境确实不需要这些模块,编译核心版本也是完全可行的选择。


参考资料Redis 官方 GitHub README

相关推荐
暴躁小师兄数据学院2 小时前
【WEB3.0零基础转换笔记】Rust编程篇-第4讲:控制流
开发语言·笔记·rust·web3·区块链·智能合约
2601_949814692 小时前
ubuntu 安装 Redis
linux·redis·ubuntu
流星雨在线2 小时前
Node.js + Express 项目完整搭建手册(Redis + MySQL + 常用中间件)
redis·node.js·express
武汉唯众智创2 小时前
Rust系统安全实训入门:唯众网络安全实训室搭建与边缘节点并发优化实操指南
人工智能·rust·网络安全实训室建设·rust系统安全实训
upp12 小时前
[最新版本centos 10系统制作与安装]
linux·运维·centos
一直都在57217 小时前
Redis (一)
数据库·redis·缓存
秦jh_17 小时前
【Redis】客户端使用
数据库·redis·缓存
我真会写代码18 小时前
Redis核心特性详解:事务、发布订阅与数据删除淘汰策略
java·数据库·redis
IT 行者18 小时前
LangChain4j 集成 Redis 向量存储:我踩过的坑和选型建议
java·人工智能·redis·后端