新闻详情

新闻详情

首页 / 资讯中心 / 详情

Linux下源码编译安装Redis全流程详解:从环境配置到启动验证

发布时间:2026/10/1 3:30:57来源:尧图网络
Linux下源码编译安装Redis全流程详解:从环境配置到启动验证
老实讲刚开始学 Redis 的时候我被安装这一步卡住的时间比后边用 Redis 写业务踩的坑加起来还多。当时手上的 Linux 服务器环境比较乱教程里说什么就跟着敲什么今天源码编译明天 apt 一把梭装到一半报了错也不知道去哪里看原因最后只能重来。反复折腾过几轮之后我才发现Linux 下装 Redis 其实是一条非常固定的流水线把版本问题、编译工具、配置文件这三个环节想清楚一次顺利装好的概率超过九成。这篇作为 Redis 基础系列的第一篇就把 Linux 下安装 Redis 这件事从零开始讲透会拆到每一步“为什么这么做”而不是只给一串复制粘贴的命令。不管你是刚接触 Redis 的运维还是第一次准备在 Linux 服务器上部署缓存服务这篇文章都能当一份可以跟着操作的安装手册。1. 安装前先别动手版本、发行版、安装方式三个问题一次说清很多人习惯直接打开搜索引擎复制命令结果装出来的版本五花八门后面查资料全都对不上。安装这事最怕的就是“先装再说”所以我建议你在敲第一条命令之前先把下面三件事定下来。1.1 版本稳定版优先别追新也千万别用远古版Redis 的官网下载页会把当前稳定版本放在最显眼的位置。以我常用的习惯来说线上环境优先选稳定大版本下的最新小版本比如 6.2、7.0、7.2、7.4 这些已经发布了很长时间的稳定线名字带 RC、M1 这类字样的候选版本除非你想尝鲜否则一律不碰。网络上那些教程里出现的 2.x、3.x除非是历史项目锁死了版本也不要选。版本决定的不只是功能还直接影响后面的配置方式和官方文档能不能对上比如 Redis 6 以后引入了 ACL、默认 bind 行为和更严格的权限区分Redis 7 又改了部分配置项含义你在 BBS 里翻到一篇 3.x 年代的配置文章来用大概率会踩坑。判断版本是否可用的保守标准其实很简单去官网 Download 页面看当前推荐的稳定版本是多少安装时就选它。本篇里我用 redis-7.2.4 作为示例你安装的时候以官网实际展示为准。1.2 发行版Ubuntu 和 CentOS包管理命令不能混用同一个 Redis 在不同 Linux 发行版上安装Redis 本身没差别差别全在系统上怎么装依赖、怎么管理服务。Ubuntu/Debian 多用 aptCentOS/RHEL 系列用 yum 或 dnf在 Ubuntu 上执行 yum 装依赖在 CentOS 上执行 apt第一步就会报错。建议你先确认一次系统版本别凭印象猜cat /etc/os-release接着看默认的包管理器Ubuntu/DebianaptCentOS 7yumCentOS 8 / Rocky Linux / AlmaLinuxdnf这篇教程会照顾两个主流分支Ubuntu 系的命令和 CentOS 系的命令我分别写清楚。你只需要照着你的系统跑其中一类就行。1.3 源码、apt、Docker为什么这篇用源码为主线主流的安装方式有三类发行版软件源、源码编译、Docker 容器。发行版软件源最快一条命令就能装完Docker 适合镜像化交付源码编译步骤多但对系统和版本的可控性最高。本篇既然叫“超详细安装”就以源码编译作为主线把每一步细节摊开讲。后面第 7 节会专门做三种方式的对比帮你判断在什么场景下选哪种更合适。2. 把编译环境弄干净gcc 和 make 到底多重要源码安装 Redis本质上就是把 C 语言源码编译成可执行的二进制文件。这个过程需要两个基础工具gcc 编译器负责把源码翻译成机器指令make 负责组织整个编译流程。很多人一上来直接下载 Redis 包然后执行 make第一行就报cc: command not found原因就是系统里根本没装编译工具链。这跟买了菜没开火一样锅灶都不齐菜谱再详细也白搭。2.1 Ubuntu/Debian 系统补齐编译依赖Ubuntu 和 Debian 下最省事的方式是直接安装一个元包 build-essential它会把 gcc、make、g、dpkg-dev 等一整套常用编译工具都带回来。另外pkg-config 负责解决依赖查找问题tcl 是 Redis 官方测试套件要用的解释器。如果你想编译完顺手跑一遍make testtcl 就得装上。sudo apt update sudo apt install -y build-essential pkg-config tcl wget注意这里的 wget 也一并装了后面下载源码包要用。如果系统里没有 wget可以用 curl 替代但新手用 wget 更直观。2.2 CentOS/RHEL 系统补齐编译依赖CentOS 7 以及使用 yum 的发行版执行sudo yum -y install gcc make tcl wgetCentOS 8 之后的 dnf 系统执行sudo dnf -y install gcc make tcl wget有些教程会让你执行yum groupinstall Development Tools那个安装的组件更多适合后续要编各种软件的环境。但只装 Redis 的话上面四个基础包已经足够。速度更快依赖也更少。2.3 检查工具是否就位依赖装完之后别急着下载 Redis。先验证两件事gcc --version make --version能输出版本号说明编译链已经通了。没有任何输出就回到上文重新检查包管理器的软件源配置。如果你的系统是 CentOS 6、gcc 版本老到 4.4 这种程度编新版 Redis 会非常吃力这时候要么想办法升级系统工具链要么选择适合老旧环境的 Redis 版本。千万别在一台老掉牙的服务器上硬编新版 Redis。3. 从下载到 make install手工安装完整流程演示工具链备齐之后真正安装的部分其实很快。我习惯把源码包统一放在 /usr/local/src 目录这是个约定俗成的源码目录和 /opt 类似没有强制要求但至少别放到 /tmp因为系统重启可能清理临时目录。3.1 下载并解压 Redis 源码包命令行操作如下sudo mkdir -p /usr/local/src cd /usr/local/src sudo wget https://download.redis.io/releases/redis-7.2.4.tar.gz sudo tar xzf redis-7.2.4.tar.gz sudo chown -R $USER:$USER redis-7.2.4 cd redis-7.2.4解释一下为什么要做chown。用 sudo 创建和解压后源码目录归属是 root普通用户进去编译会遇到权限问题。把目录所有权改成当前用户后面就可以不用 sudo 直接 make避免某些文件因为权限不一致导致编译到一半失败。这属于细节但很实用的习惯。3.2 执行编译留意并发参数编译命令本身很简单make -j4-j4表示用 4 个并行任务编译。如果你机器的 CPU 核数很多可以先执行nproc查看核数然后把数字改成核数加一。但这里有个现实提醒并行任务越多编译期间吃内存越大。1GB 内存的小 VPS 如果直接make -j16系统很可能被编译进程压到失去响应。我一般在小内存机器上老老实实用make -j2。编译过程大概一两分钟看到源码目录下出现 redis-server、redis-cli 这些可执行文件就说明编译成功。想跑 Redis 自带测试套件的话可以在编译后执行make test这个会花比较长时间而且必须装了 tcl第一次跑可以跳过不影响安装。3.3 make install 安装到系统路径编译完成后执行sudo make install这一步会把 redis-server、redis-cli、redis-sentinel、redis-benchmark、redis-check-aof、redis-check-rdb 这些二进制文件复制到 /usr/local/bin。选择这个目录的原因很简单它通常在系统 PATH 环境变量里意味着你在任何目录下直接敲 redis-server 都能找得到。安装完成后验证一下redis-server --version redis-cli --version能输出版本号说明二进制已经进入系统路径。万一提示 command not found用echo $PATH看看 /usr/local/bin 在不在里面不在就把它加进 PATH或者重新登录一次 shell 让环境变量生效。4. 安装后的关键一步redis.conf 里应该动哪几个配置二进制装好只是第一步真正决定 Redis 能不能跑得顺手的是配置文件。Redis 源码包里自带一份 redis.conf注释非常详细生产环境一般也不会从头写都是复制官方模板改。强烈建议你把配置目录和数据目录先建好别让 Redis 把数据文件散落在各种奇怪的位置。4.1 创建配置、日志、数据目录sudo mkdir -p /etc/redis /var/log/redis /var/lib/redis sudo cp /usr/local/src/redis-7.2.4/redis.conf /etc/redis/redis.conf这里我推荐三个固定目录/etc/redis放 redis.conf/var/log/redis放日志文件/var/lib/redis放 RDB/AOF 持久化数据为什么单独分目录而不是放在 Redis 安装目录里因为 Linux 的惯例是配置放 /etc日志放 /var/log数据放 /var/lib这样系统备份、日志清理、权限控制都有明确的边界。等你以后维护的 Redis 多了就知道这种分明很值钱。注意一点目录如果是用 sudo 创建的当前普通用户往往没有写入权限。后面启动 Redis 之前最好先把日志目录和数据目录的所有权交给当前用户sudo chown -R $USER:$USER /var/log/redis /var/lib/redis不然启动时很容易遇到 log 文件打不开的权限报错。4.2 核心配置项daemonize、dir、logfile打开配置文件的方式随意先用 vim 搜到对应关键词sudo vim /etc/redis/redis.conf基础安装阶段我建议先把这几个配置项看清楚配置项推荐值作用daemonizeyes让 Redis 启动后在后台运行Shell 不会被占住pidfile/var/run/redis_6379.pid记录进程号方便 stop 和管理logfile/var/log/redis/redis-server.log把日志写入固定文件排查问题能用dir/var/lib/redis持久化文件存放目录必须存在port6379默认端口一般不用改之所以把 daemonize 设为 yes是为了让 redis-server 变成你熟悉的“后台守护进程”。如果不设置启动后终端会被 Redis 阻塞CtrlC 退出进程也就停了这对教学阶段很不友好。后面如果你用 systemd 托管服务才需要反过来把 daemonize 设成 no让 systemd 自己来管理前台进程。4.3 网络与安全bind、port、requirepassRedis 6 之后官方默认 bind 是 127.0.0.1只允许本机连接。这是很安全的设计。学习阶段保持这个默认值就好不要急着改成 0.0.0.0。只有当你确定要远程访问时才需要修改 bind并且必须配合 requirepass 设置访问密码。密码别图省事设成 123456后面如果这台机器要暴露到内网甚至公网弱密码就是给扫描器送菜。requirepass这一项我强烈建议你等把这篇文章后面的启动、验证、关闭流程全部跑通之后再去打开。原因很简单一旦开启密码所有 redis-cli 命令都要带认证参数对第一次装 Redis 的人来说很容易多一层困惑。先把无密码的本地流程跑通再回来加锁这是非常合理的顺序。4.4 持久化RDB 和 AOF 先混个眼熟配置文件里默认开着 RDB 快照持久化也就是每隔一段时间把内存数据落盘到 dir 目录下的 dump.rdb 文件。这对学习和很多缓存场景够用了。如果你想追求更高的数据可靠性后面可以把 appendonly 设为 yes开启 AOF。这个阶段先不用深入改知道有这两个机制、知道文件放哪里就行Redis 基础系列的后续文章会专门讲。5. 启动、验证和关闭第一次看到 PONG 的感觉配置全部就绪可以正式把 Redis 跑起来了。5.1 启动服务并检查进程执行启动命令redis-server /etc/redis/redis.conf因为配置文件里 daemonize 已经设为 yes启动后 Shell 会很快返回Redis 在后台运行。这时候验证两件事。先看进程ps -ef | grep redis-server会有 redis-server 的进程记录说明进程活着。再看日志tail -n 50 /var/log/redis/redis-server.log正常的日志里能看到 Redis 版本号、监听的端口、以及 “Ready to accept connections tcp” 之类的字样。看到这句就可以用客户端握手了。5.2 redis-cli ping 验证服务Redis 自带命令行客户端 redis-cli最经典的验证就是redis-cli ping如果返回PONG说明 Redis 已经完整跑起来了。这个 PONG 就是 Redis 和世界打招呼的方式你以后会在无数脚本和监控命令里反复看到它。5.3 优雅关闭redis-cli shutdown关闭 Redis 的正确姿势不是直接 kill 进程而是用 shutdown 命令redis-cli shutdown如果已经设置了 requirepass则使用环境变量方式避免密码暴露在 shell 历史记录里REDISCLI_AUTH你的密码 redis-cli shutdown之所以推荐用 shutdown 而不是 kill -9是因为 shutdown 会先触发数据落盘尽量保证持久化文件完整。而强行 kill 进程极端场景下可能丢失未落盘的数据。等将来你负责生产环境的 Redis 时这个细节会很重要。5.4 给 Redis 配置开机自启学习阶段可以不做但如果是自己电脑上的虚拟机或者长期使用的服务器每次重启之后手动启动 Redis 确实很烦。Linux 下最标准的方案是写一个 systemd 服务单元。在这里我用一个通用模板[Unit] DescriptionRedis Server Afternetwork.target [Service] ExecStart/usr/local/bin/redis-server /etc/redis/redis.conf ExecStop/usr/local/bin/redis-cli shutdown Restartalways RestartSec3 [Install] WantedBymulti-user.target把这段内容写入 /etc/systemd/system/redis.service 后执行sudo systemctl daemon-reload sudo systemctl enable --now redis sudo systemctl status redis需要提醒的是用 systemd 托管时redis.conf 里的 daemonize 应该改为 no让 Redis 前台运行systemd 才能正确跟踪主进程状态。否则会出现 systemd 以为自己没管到进程、但 Redis 实际已经在跑的情况。另外如果已经开启 requirepassExecStop 里的 redis-cli 也要带上认证信息这里不展开知道有这个关系就行。6. 安装和启动阶段常见报错排查实录这部分我把这些年帮同事装 Redis 时真正遇到过的高频问题整理出来。如果你安装时报错了先对号入座看原因别急着重装系统。6.1 make 阶段cc: command not found现象是执行 make 后直接报 “cc: command not found” 或 “make: gcc: Command not found”。原因几乎都是编译工具链没装。对策就是回到第 2 节把 build-essential 或 gcc/make 装上再重新编译。这里有个小提醒装完 gcc 后建议重新执行sudo ldconfig再开一个新的 Shell 窗口避免 PATH 或缓存问题导致还是找不到。6.2 make 阶段jemalloc 相关报错另一类高发报错长得像这样zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory原因和 Redis 的内存分配器策略有关。Redis 在 Linux 上默认使用 jemalloc 替代系统自带的 malloc目的是减少内存碎片。但某些系统或交叉编译环境下jemalloc 构建会失败。临时解决办法是先清理再指定用 libc 分配make distclean make MALLOClibc如果这个报错反复出现说明当前环境对 jemalloc 支持确实不好用 libc 方式编译不影响学习。但我还是建议如果你是在标准 Ubuntu/CentOS 上遇到这个错先查一下是不是没有清理上一次编译残留直接make distclean再按默认方式重新 make优先级更高。6.3 启动阶段Cant open the log file日志提示 Permission denied多半是配置文件里 logfile 指定的目录当前用户没有写权限。我前面建议过启动前执行sudo chown -R $USER:$USER /var/log/redis /var/lib/redis如果你用 root 启动 Redis一般不会撞到这个权限问题但凡你用了独立用户或普通用户这个排查点就很容易遇到。看日志文件位置时用ls -ld /var/log/redis确认目录归属即可。6.4 启动阶段Address already in use如果系统提示 6379 端口被占用先别急着换端口很可能是机器上已经跑着一个老版本的 Redis或者残留了没有完全退出的进程。排查命令ss -lntp | grep 6379看到进程号后用对应的 redis-cli shutdown 停掉旧实例或者确认是不是其他程序占用了端口。尽量不要用 kill -9 硬杀 Redis毕竟它可能有未落盘的数据。6.5 远程连接失败Redis Desktop Manager 连不上这个问题在 Windows 上用可视化工具连接 Linux 上的 Redis 时特别常见。现象是工具提示连接超时或拒绝连接。按这个顺序检查redis.conf 里的 bind 是否允许远程访问。默认 127.0.0.1 只允许本机远程工具连不上非常正常。是否设置了 requirepass。设置了密码但工具里没填也会认证失败。Linux 防火墙是否放行 6379 端口。Ubuntu 常见 ufwCentOS 常见 firewalld# Ubuntu sudo ufw allow 6379/tcp # CentOS / Rocky sudo firewall-cmd --add-port6379/tcp --permanent sudo firewall-cmd --reload如果服务器是云厂商的 ECS还要去控制台的安全组放行端口。这里必须严肃说一句修改 bind 让 Redis 暴露给公网之前一定要先设置一个足够强度的 requirepass。Redis 默认没做加密传输暴露在公网上就是裸奔。更稳妥的做法是别把 Redis 直接暴露公网而是用 SSH 隧道或者走内网访问。7. apt 和 Docker 也能装那源码安装到底图什么既然有更简单的安装方式为什么还要把源码安装讲这么细因为搞懂源码编译的过程你对 Redis 的了解会扎实很多。不过实际使用中apt 和 Docker 确实也有自己的位置。7.1 apt 安装一条命令适合快速上手Ubuntu 上一条命令就能装sudo apt install -y redis-serverapt 安装会自动创建 redis 用户自动配置 systemd 服务安装完就能systemctl start redis。配置文件同样在 /etc/redis/redis.conf。它的短板是版本跟随系统仓库一般比官网最新稳定版要旧而且你没法自由选择版本。对学习测试来说完全够用对追求版本可控的生产来说就有点被动。7.2 Docker 安装快但要多理解一层抽象Docker 方式更简单docker run -d --name redis -p 6379:6379 redis:7后面想确认连接redis-cli -h 127.0.0.1 -p 6379 ping容器部署的优点是镜像统一、跨机器一致性好也方便随时销毁重建。代价是你得理解镜像、容器、数据卷、端口映射这一套抽象概念。如果你还没掌握 Docker只是为了学 Redis这层抽象反而会干扰你。而且容器里的 Redis 配置文件路径、日志输出方式都跟传统安装有差异新手上手时容易更乱。7.3 三种方式怎么选安装方式优点缺点适合场景源码编译版本完全可控、目录自定、理解最深入步骤多、需要编译环境学习基础、生产环境精确控制系统源安装一条命令、systemd 自动管理、依赖完整仓库版本偏旧、不便锁定版本快速体验、本机测试Docker镜像统一、环境隔离、重装方便多一层抽象、数据卷配置要学微服务、CI/CD、版本测试我个人的建议是如果你真的打算把 Linux 下的 Redis 用明白第一遍一定老老实实走一次源码安装。你会发现之前觉得神秘的东西——二进制从哪来、配置去哪找、日志写在哪、数据存哪——全都在自己的掌控里。如果你只是为了尽快跑一个环境验证业务那就怎么快怎么来apt 或 Docker 都没问题。等装完 Redis下一步自然就是学会用 redis-cli 操作 Redis 的五大基础数据类型了那是这个系列的后续内容。当下最重要的是确保你清楚自己装的 Redis 跑在哪里、日志写在哪里、数据落在哪里、怎么安全地停掉它——这四件事搞不清楚不管用什么安装方式后面都是要还债的。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Realtek RPC 与 Control Center 3.0 故障排查修复 2026/10/1 5:21:17

Realtek RPC 与 Control Center 3.0 故障排查修复

1. 先别急着重装:这两类故障的根子根本不在同一层Realtek Audio Control 报"无法连接 RPC 服务"和 Control Center 3.0 打不开,看起来都是"某个软件坏了",但拆开看,一个是驱动栈的接口对不上,另一…

阅读更多 →
Agent底层重构:从常驻进程到事件驱动状态机的工程实录 2026/10/1 5:21:17

Agent底层重构:从常驻进程到事件驱动状态机的工程实录

1. 旧架构的账:Orkas 重构前的四个窒息点先说清楚一件事:Orkas 不是新玩具,它已经跑了大半年,服务过真实的业务流量。但在 2026 年初的某个周五晚上,当我把压测并发数从 50 调到 200 的时候,监控面板上一排…

阅读更多 →
AnythingLLM私有化部署实战:知识库+RAG+Agent工作区 2026/10/1 5:21:17

AnythingLLM私有化部署实战:知识库+RAG+Agent工作区

开头不管你是刚把本地模型跑起来、正在满世界找前端界面的新手,还是已经折腾过一堆自托管工具、想把手头的 AI 能力真正落到工作流里的老手,AnythingLLM 这个名字大概率都在你的搜索记录里出现过。这个开源项目火起来其实不算久,但它的定位很…

阅读更多 →
百度新闻与今日头条关键词爬虫实战:Requests到MySQL入库 2026/10/1 5:21:17

百度新闻与今日头条关键词爬虫实战:Requests到MySQL入库

简介:这是一份基于Java开发的新闻聚合爬虫项目,面向具备一定Java基础、希望快速搭建新闻数据采集系统的开发者与数据收集人员。程序支持按关键字爬取百度新闻与今日头条内容,并将抓取结果存入数据库,解决手工浏览新闻效率低、数据…

阅读更多 →
Windows自动更新关闭全指南:原理、6种方法与企业级管控 2026/10/1 5:21:04

Windows自动更新关闭全指南:原理、6种方法与企业级管控

1. 为什么关掉Windows自动更新这件事,比你想象中更值得认真对待“关闭Windows自动更新”这八个字,看起来像一句随手搜来的操作指令,但背后藏着的是成千上万普通用户被系统“背刺”后的集体吐槽:正在写重要报告,电脑突然…

阅读更多 →
直方图均衡化与规定化:图像对比度增强的底层硬功夫 2026/10/1 5:21:04

直方图均衡化与规定化:图像对比度增强的底层硬功夫

1. 这不是调色软件里的“自动增强”,而是图像处理的底层硬功夫直方图均衡化和规定化,这两个词听起来像实验室里才用得上的术语,但其实你每天刷手机时,相机App自动优化夜景照片、短视频平台压缩上传画质后仍保持细节清晰、甚至医院…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉