CentOS 下源码编译安装完整版 Redis 8.0 指南(附 Rust 工具链详解)
CentOS 下源码编译安装完整版 Redis 8.0 指南前言Redis 是目前最流行的内存数据结构服务器被广泛应用于缓存、会话存储、消息队列、实时分析等场景。本文基于 Redis 官方 README 中的构建文档详细介绍在 CentOS及 RHEL 系发行版下如何从源码编译安装包含所有数据结构的完整版 Redis并解释为什么现在编译 Redis 需要 Rust 工具链。注意由于 CentOS Linux 已停止维护推荐使用 Rocky Linux 或 AlmaLinux 作为替代它们与 RHEL 完全兼容。本文中的步骤在这两个发行版上验证通过。一、为什么需要编译安装完整版 RedisRedis 提供了丰富的数据结构但默认编译可能只包含核心功能。通过设置BUILD_WITH_MODULESyes你可以启用以下高级数据结构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 安装基础依赖# 清理缓存并配置仓库sudodnf clean allsudotee/etc/yum.repos.d/goreleaser.repo/dev/nullEOF [goreleaser] nameGoReleaser baseurlhttps://repo.goreleaser.com/yum/ enabled1 gpgcheck0 EOF# 更新系统并安装开发工具sudodnf update-ysudodnf groupinstallDevelopment Tools-ysudodnf config-manager --set-enabled powertoolssudodnfinstall-yepel-release2.3 安装编译依赖# 安装 Redis 编译所需的依赖包sudodnfinstall-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-devel2.4 配置 Python 虚拟环境python3-mvenv /opt/venv2.5 启用 GCC 13 工具链Redis 8.0 需要较新版本的 GCCCentOS/RHEL 默认的 GCC 版本过低sudocp/opt/rh/gcc-toolset-13/enable /etc/profile.d/gcc-toolset-13.shechosource /etc/profile.d/gcc-toolset-13.sh|sudotee-a/etc/bashrc2.6 安装 CMakeRedis 8.0 官方要求 CMake 3.25.1不支持更高版本CMAKE_VERSION3.25.1ARCH$(uname-m)if[$ARCHx86_64];thenCMAKE_FILEcmake-${CMAKE_VERSION}-linux-x86_64.shelseCMAKE_FILEcmake-${CMAKE_VERSION}-linux-aarch64.shfiwgethttps://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_FILE}chmodx${CMAKE_FILE}sudo./${CMAKE_FILE}--skip-license--prefix/usr/local --exclude-subdirrm${CMAKE_FILE}cmake--version三、下载并编译 Redis3.1 下载源码# 创建源码目录sudomkdir-p/usr/srccd/usr/src# 下载 Redis 8.0 源码以 8.0.0 为例可替换为其他版本sudowget-Oredis-8.0.0.tar.gz https://github.com/redis/redis/archive/refs/tags/8.0.0.tar.gz# 解压sudotarxvf redis-8.0.0.tar.gzsudormredis-8.0.0.tar.gz3.2 编译安装这是关键步骤设置以下环境变量来启用完整功能# 激活 GCC 工具链source/etc/profile.d/gcc-toolset-13.sh# 进入源码目录cd/usr/src/redis-8.0.0# 设置编译选项# BUILD_TLSyes - 启用 TLS 支持# BUILD_WITH_MODULESyes - 编译所有模块JSON、Bloom Filter 等# INSTALL_RUST_TOOLCHAINyes - 自动安装 Rust 工具链编译模块必需# DISABLE_WERRORSyes - 禁用警告转错误避免编译被无关警告中断exportBUILD_TLSyesBUILD_WITH_MODULESyesINSTALL_RUST_TOOLCHAINyesDISABLE_WERRORSyes# 编译使用所有 CPU 核心加速make-j$(nproc)all编译过程可能需要 10-30 分钟取决于机器配置。3.3 安装sudomakeinstall这会将 Redis 可执行文件安装到/usr/local/bin/。四、启动 Redis4.1 快速启动cd/usr/src/redis-8.0.0 ./src/redis-server redis-full.conf4.2 后台运行./src/redis-server redis-full.conf--daemonizeyes4.3 验证安装# 连接 Redisredis-cliping# 应该返回PONG# 查看版本redis-cli INFO server|grepredis_version4.4 验证模块加载# 查看已加载的模块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 为什么选择 RustRust 相比 C 的优势特性CRust内存安全手动管理容易出错编译时保证内存安全并发安全线程安全问题频发所有权系统保证线程安全性能极高与 C 相当包管理手动现代化的 Cargo 生态Redis 的模块如 RedisJSON需要解析复杂的 JSON 文档、执行向量相似性搜索等计算密集型任务。Rust 能在保证内存安全的同时提供与 C 相当的性能是这些场景的理想选择。5.3INSTALL_RUST_TOOLCHAINyes的作用当你设置这个环境变量时Redis 的 Makefile 会检查系统是否已安装 Rust 工具链rustc、cargo如果没有自动下载并安装 Rust 工具链到deps/rust/目录使用 Cargo 编译 Rust 依赖模块将编译好的模块链接到 Redis 主程序5.4 需要 Rust 模块的功能以下 Redis 高级功能依赖 RustRedisJSONJSON 文档存储和查询RedisSearch全文搜索和聚合RedisJSON与RedisSearch的组合JSON 文档索引向量相似度搜索Redis Stack 中的一部分如果你不需要这些功能可以设置BUILD_WITH_MODULESno这样就不需要 Rust 工具链# 仅编译核心功能不需要 Rustmake-j$(nproc)all六、常见问题Q1: 编译报错 “cc: command not found”确保已启用 gcc-toolset-13source/etc/profile.d/gcc-toolset-13.shQ2: CMake 版本不对Redis 8.0 要求 CMake 3.25.1更高版本会导致构建失败cmake--version# 确认为 3.25.1Q3: Rust 工具链下载失败可以手动安装 Rust 后再编译curl--protohttps--tlsv1.2-sSfhttps://sh.rustup.rs|shsource$HOME/.cargo/env然后编译时使用exportINSTALL_RUST_TOOLCHAINno# 跳过自动安装make-j$(nproc)allQ4: 如何查看 Redis 支持哪些模块redis-cli INFO modules七、总结通过源码编译安装 Redis 8.0 完整版虽然步骤较多但能获得✅ 所有高级数据结构支持JSON、Bloom Filter、Time Series 等✅ Redis Query Engine向量搜索、全文搜索✅ TLS 加密连接支持✅ 更好的性能和定制能力Rust 工具链是 Redis 模块化战略的重要组成部分确保了高级功能的内存安全和性能。如果你的生产环境确实不需要这些模块编译核心版本也是完全可行的选择。参考资料Redis 官方 GitHub README