
CentOS 8装Redis按理说是特别基础的活儿。但我在公司帮同事处理过好几回Redis环境问题发现真正折腾人的根本不是安装本身而是yum源失效、编译版本选错、卸载不干净、卸完端口还被残留进程占着这一连串破事。今天这篇文章就专门把CentOS 8上Redis从安装到卸载的完整链路讲清楚从环境准备、编译安装、基础配置再到彻底卸载和残留清理最后附一份常见问题的排查速查表。无论你是刚接触Linux的新手还是需要频繁搭建回收Redis环境的运维照着做基本不会走弯路。1. 装之前先把这几件事想明白1.1 CentOS 8的yum源问题绕不开很多人拿到一台CentOS 8服务器第一反应就是yum install redis。如果你现在还能一把装成功恭喜你你的yum源配置要么是已经切到了镜像源要么是运气好。多数情况下CentOS 8默认的mirrorlist.centos.org地址已经无法访问了直接导致yum install报错提示Cannot find a valid baseurl for repo: base或者Could not resolve host: mirrorlist.centos.org。这不是你网络的问题是CentOS 8官方仓库停止维护带来的连锁反应。默认的repo文件里那些域名解析不到yum自然找不到软件包。解决办法不复杂把软件源切换到可用的镜像地址就行。我习惯用阿里云的vault源操作步骤如下# 先备份原有repo配置 mkdir -p /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ # 下载阿里云的CentOS 8 vault仓库配置 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo # 清理并重建缓存 yum clean all yum makecache执行完这几条命令再yum install就有反应了。注意这里用的是8.5.2111这个vault版本这是阿里云专门为停止维护的CentOS 8保留的历史仓库。这个操作做完你要做的第一件事就是装基础编译工具这会在后面反复用到。1.2 安装方式选哪个yum装还是编译装yum源恢复之后安装Redis有两条路对比项yum安装编译安装上手速度快一条命令装完慢需要编译等待版本控制依赖源内版本通常偏旧可从官网选择任意稳定版安装路径分散在/usr/bin、/etc、/var等目录可统一指定到某个目录卸载方便度yum remove即可但有残留风险直接删除目录即可但要手动清理服务文件生产环境适用性适合快速测试适合生产可控性强我个人的习惯是生产环境一律编译安装。原因有三个一是版本可控能用上官方最新的稳定版比如7.0.x或6.2.x而不是仓库里那个老旧的默认版本二是安装目录统一方便日后的维护和备份三是卸载时逻辑清晰把整个目录删掉再加上手动清理几个文件比yum残留的处理干净得多。如果你只想临时起个Redis实例跑跑demo那yum装也行。但既然文章讲的是“安装卸载”我下面重点讲编译安装的完整流程同时把yum方式一并带过。2. 编译安装Redis的完整实操2.1 先把编译环境补齐编译Redis需要gcc和makeCentOS 8默认不一定装了完整的编译工具链。先执行这条命令yum install -y gcc make tar wget tcl这里我把tar和wget也一起装了一个是解压源码包必备一个是下载源码包要用。tcl是为了后面可选执行make test时准备redis源码自带测试套件如果你不想跑测试不装tcl也不影响编译和安装。装完gcc之后验证一下版本确保编译环境正常gcc --versionCentOS 8自带的gcc是8.x版本编译Redis 7.x完全没有问题不用担心版本过老。2.2 下载源码版本怎么选源码包去哪下首选官方地址download.redis.io。如果你所在网络访问官方比较慢也可以用国内镜像加速下载。版本选择上目前2025年Redis 7.0.x和6.2.x都是非常成熟稳定的选择。Redis 7引入了不少性能优化和新特性正常业务完全可以用。我一般选7.0系列的最新小版本比如redis-7.0.15.tar.gzcd /opt wget https://download.redis.io/releases/redis-7.0.15.tar.gz tar xzf redis-7.0.15.tar.gz cd redis-7.0.15下载完成之后先别急着编译看一下目录里的README.md和redis.conf文件里面有很多官方说明。这一步虽然不起眼但对于想深入理解Redis配置的人来说比网上任何教程都权威。2.3 编译和安装PREFIX参数别忽略进入源码目录后依次执行make make install PREFIX/usr/local/redis这里有一个关键点PREFIX参数指定了Redis的安装根目录。加了这个参数编译产出的可执行文件会被安装到/usr/local/redis/bin目录下而不去污染/usr/local/bin或/usr/bin。为什么不加PREFIX就默认装到/usr/local/bin加上PREFIX有什么好处统一目录管理对我来说价值很大——升级版本时直接换目录出问题时整个目录打包备份卸载时一条rm -rf就能把所有二进制清光不用到处找散了满系统的文件。编译过程中如果一切顺利最后看到Hint: Its a good idea to run make test的提示就说明编译完成了。make test可以跑一遍官方测试用例确认Redis功能正常但耗时较长生产环境时间紧迫时可以不跑。我一般只做一次确认当前版本没问题。2.4 安装目录规划与基础验证安装完成后Redis的可执行文件在/usr/local/redis/bin下。为了后续配置清晰我习惯手动创建配置目录和数据目录把整个Redis运行所需的所有文件集中管理mkdir -p /usr/local/redis/etc mkdir -p /usr/local/redis/data mkdir -p /usr/local/redis/logs # 把默认配置文件复制到指定配置目录 cp /opt/redis-7.0.15/redis.conf /usr/local/redis/etc/这样最终的目录结构是/usr/local/redis/ ├── bin/ # redis-server、redis-cli、redis-benchmark等可执行文件 ├── etc/ # redis.conf配置文件 ├── data/ # RDB和AOF持久化文件 └── logs/ # 运行日志然后验证一下版本号确认安装到位/usr/local/redis/bin/redis-server --version会输出类似Redis server v7.0.15 sha00000000:0 mallocjemalloc-...的信息。到这里二进制层面的安装就算完成了但真正的“配置调优”才刚刚开始。3. 启动配置与基础使用3.1 redis.conf里最应该改的5个配置Redis默认配置能跑起来但直接扔到生产环境绝对不行。下面这几个配置项每次新装Redis我都会逐个过一遍第一daemonize。默认是daemonize no也就是Redis以前台方式运行你一关终端它就停了。改成daemonize yes可以让Redis在后台以守护进程方式运行。第二requirepass。这是Redis的访问密码。默认是注释状态意味着无密码访问任何人只要能连上你的6379端口就能操作所有数据。这个必须要改我建议用一个强密码类似MyRedis2025#Secure这种级别。生产环境我见过太多Redis因为裸奔被入侵的案例这个配置项是最简单但最关键的一道防线。第三bind。默认绑定127.0.0.1只允许本机访问。如果Redis和应用部署在同一台机器保持默认就好。如果需要远程访问改成内网IP比如bind 192.168.1.100不要图省事直接bind 0.0.0.0这等于把Redis完全暴露在网络上。第四port。默认6379一般不用改但要确认这个端口没有被其他服务占用。如果你要跑多个Redis实例可以分别设置6380、6381等不同端口。第五dir、logfile和pidfile。这三个分别指定数据持久化目录、日志文件和进程PID文件的存放位置。建议改用我们上面创建的目录dir /usr/local/redis/data logfile /usr/local/redis/logs/redis.log pidfile /var/run/redis_6379.pid修改配置时我有个习惯每改一个配置项就在旁边用#注释写明改动原因方便日后排查。这个习惯在团队协作时特别有用新同事接手时一眼就能看懂前人改过什么。3.2 用systemd管理Redis实现开机自启daemonize yes只是让Redis在后台运行但如果服务器重启Redis不会自动启动。正规做法是写一个systemd服务文件用systemd来管理Redis的生命周期。创建/etc/systemd/system/redis.service内容如下[Unit] DescriptionRedis persistent key-value database Afternetwork.target [Service] ExecStart/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf ExecStop/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown Restartalways Userredis Groupredis [Install] WantedBymulti-user.target这里我把User和Group设置成了redis所以需要先创建一个专用系统用户useradd -r -s /sbin/nologin redis chown -R redis:redis /usr/local/redis用专用用户而不是root运行Redis是安全上的基本要求。即使Redis被攻击者利用也拿不到root权限。然后重载服务配置并启动systemctl daemon-reload systemctl start redis systemctl enable redis systemctl status redis看到active (running)就说明服务已经正常运行了。注意ExecStop这里执行的redis-cli shutdown如果配置了requirepass密码shutdown时需要加-a 你的密码参数才能通过认证否则会提示无权限。不过把明文密码写进service文件会有点安全隐患我自己的做法是只设置密码允许本机shutdown这样配合-a使用风险可控。3.3 redis-cli验证安装是否成功服务起来之后马上用redis-cli做一轮基础验证确认读写正常# 本机无密码测试 /usr/local/redis/bin/redis-cli ping # 设置了密码后需要带密码操作 /usr/local/redis/bin/redis-cli -a MyRedis2025#Secure ping # 基础读写验证 /usr/local/redis/bin/redis-cli -a MyRedis2025#Secure set mykey hello /usr/local/redis/bin/redis-cli -a MyRedis2025#Secure get mykey # 查看服务信息 /usr/local/redis/bin/redis-cli -a MyRedis2025#Secure info serverPING命令返回PONG说明服务正常SET和GET验证了基本读写链路。每次新装Redis后我必跑这几条命令30秒就能确认安装没问题比看日志高效得多。4. 卸载Redis干净利落不残留4.1 不同安装方式的卸载差异很多同学以为卸载就是yum remove redis或者把安装目录删了结果过几天发现6379端口还在被占用或者redis-server进程还在跑一脸懵。这就是卸载不彻底的典型表现。yum remove redis能卸载rpm包装进去的文件但yum装完Redis后配置文件、持久化数据文件可能散落在/etc/redis.conf、/var/lib/redis、/var/log/redis等位置yum remove不一定全部清除。编译安装的方式则需要手动清理但逻辑上更清晰——你在哪里装的就从哪里删。4.2 编译安装的彻底清理流程编译安装的Redis我把清理步骤总结成以下几步# 1. 停止服务并取消开机自启 systemctl stop redis systemctl disable redis # 2. 删除systemd服务文件 rm -f /etc/systemd/system/redis.service systemctl daemon-reload # 3. 删除安装主目录 rm -rf /usr/local/redis # 4. 删除数据目录如果数据不保留的话 rm -rf /usr/local/redis/data rm -rf /usr/local/redis/logs # 5. 删除Redis专用系统用户 userdel redis # 6. 清理源码目录 rm -rf /opt/redis-7.0.15 rm -f /opt/redis-7.0.15.tar.gz这套流程下来二进制文件、配置、日志、数据、服务文件、用户全都没了。但等一下还有几个地方容易被遗漏。第一残留进程检查。如果你之前没有通过systemctl stop redis优雅停服而是直接kill -9Redis进程可能变成僵尸状态或者重新拉起。卸载前必须确认进程真的没了ps -ef | grep redis ss -lntp | grep 6379如果还有进程在跑先kill掉pkill -9 redis-server第二/var/run下的PID文件。如果之前配置了pidfile /var/run/redis_6379.pid服务停止时PID文件会保留需要手动清理rm -f /var/run/redis_6379.pid第三环境变量和PATH。如果你之前把Redis的bin目录加到了/etc/profile或者~/.bashrc里卸载后要手动删除相关行。否则以后执行redis-cli还是会报命令找不到误导排查方向。4.3 快速确认卸载干净的“三看”原则卸载完怎么判断真的干净了我总结了三个检查维度简称“三看”第一看进程——执行ps -ef | grep redis没有任何输出即正常。第二看端口——执行ss -lntp | grep 6379没有监听即正常。这里要注意如果端口还有监听可能是其他程序占用了需要进一步确认不要想当然认为是Redis残留。第三看文件——执行find /usr/local -name *redis* 2/dev/null和find /etc -name *redis* 2/dev/null没有输出即正常。这一步能帮你发现遗漏的配置文件和日志残留。“三看”全过卸载才算真正完成。这套检查方式我每回都用一次都没出过错。5. 安装卸载过程常见问题速查问题现象可能原因解决办法yum install报错Cannot find a valid baseurlCentOS 8源失效切换vault源参考1.1节make时报gcc: command not found未安装编译工具链yum install -y gcc makemake test报错You need tcl 8.5 or newer缺少tcl依赖yum install -y tclRedis启动后日志有Memory overcommit must be enabled告警系统内存过度分配未开启echo vm.overcommit_memory 1 /etc/sysctl.conf sysctl vm.overcommit_memory1远程访问Redis被拒绝bind限制、protected-mode或防火墙未放行改bind为内网IP确认防火墙3306/6379端口放行确认要求的密码配置正确systemctl start redis失败配置文件路径错误或目录权限不对journalctl -u redis查看具体报错确认目录归属redis用户卸载后6379端口仍被监听残留进程未清干净ss -lntpRedis连接报NOAUTH Authentication required设置了密码但未带密码访问redis-cli -a 密码操作或先auth 密码表格之外再说一个我踩过很深的坑。有次我在一台测试机上卸载旧版Redis装了新版本结果启动后redis-cli ping始终报错查了十分钟才发现是旧版本的残留进程还占着6379端口新进程根本起不来。当时systemctl status redis显示的是新服务的状态但实际监听端口的还是旧进程——这种“假启动”最坑人。所以每次启动前先看一下ss -lntp | grep 6379确认端口空闲或者当前监听者就是自己能省下大量排查时间。另外还有一个隐藏问题Redis启动时如果dir指定的数据目录不存在redis-server会直接启动失败但错误日志不会特别显眼。所以配置里一旦改了dir路径务必先mkdir -p创建好目录再启动服务。最后处理vm.overcommit_memory告警时注意sysctl配置要写入/etc/sysctl.conf持久化否则重启之后告警又回来了。Redis在RDB持久化fork子进程时对内存分配策略比较敏感弄不好会触发数据丢失这个配置千万别省略。6. Redis装好之后还能干点什么安装和卸载整明白了Redis的作用才刚开始显现。这里简单聊聊几个我经常遇到的扩展使用方向。6.1 持久化配置RDB和AOFRedis虽然叫内存数据库但数据安全性也很重要。我建议至少开启RDB快照做常规备份AOF做更细粒度的持久化两者可以同时开启。配置里主要关注save 900 1 save 300 10 save 60 10000 appendonly yes appendfilename appendonly.aof appendfsync everysec第一次配置持久化的时候可以在给自己测过的环境里通过网络压测确认一下fsync策略对吞吐量的影响always最安全但性能下降明显everysec是兼顾性能和安全的常用选择。6.2 远程管理工具Redis Desktop Manager很多同学装完Redis之后习惯用图形化工具查看数据。Redis Desktop ManagerRDM是目前使用率比较高的一个客户端支持String、Hash、List、Set、ZSet这些数据类型的可视化管理。连接远程Redis时建议先通过SSH隧道方式连接而不是把6379端口直接暴露到公网。这里也是一些安全风险的高发地切勿图方便裸奔。6.3 进阶方向主从复制、哨兵、集群装好单机Redis之后手痒的话可以搭建主从复制练手。配置也简单在从节点的redis.conf里加上replicaof 主节点IP 6379然后启动从节点即可自动同步主节点数据。再往上就是哨兵模式实现自动故障切换以及Redis Cluster横向扩展。这些我后面可能会单独写文章详细讲。另外注意一点不管搭哪种架构密码策略和网络隔离都是第一时间要考虑的事。Redis系列数据结构里String最基本Hash适合存对象List适合做消息队列Set适合做去重和标签ZSet适合做排行榜。你们可以根据业务场景去用但切记不要在配置文件和数据文件上偷懒该备份的备份该设密的设密。拿我自己来说每次装完Redis第一件做的事是备份一份redis.conf到本地第二件是把密码记到团队密码管理器里第三件是确认systemctl enable redis已经生效。这三步做完才算真正下班。装Redis不难难的是装完之后别给环境留下隐患。希望今天这些流程和坑能让你们少走几步弯路。