1. 安装前的环境准备与yum源选型1.1 为什么直接敲 yum install redis 经常装不上很多刚从Windows转到Linux的朋友第一次装Redis上来就是一通yum install redis结果大概率会看到 No package redis available 这类报错就直接懵了。这里先解释一下CentOS自带的官方yum仓库里默认没有Redis包因为Red Hat官方仓库遵循严格的软件许可和版本策略只收录他们认为足够稳定、有商业支持背书的软件。Redis这种更新节奏快、以AGPL许可发布的软件长期不在默认仓库里。所以要想通过yum装Redis第一步不是敲安装命令而是选对yum源。选源这件事我踩过不少坑今天把完整思路捋一遍。1.2 配置EPEL源最稳妥的起步方案EPELExtra Packages for Enterprise Linux是Fedora社区为RHEL系发行版维护的扩展软件包仓库里面收录了大量官方仓库没有的软件。Redis在EPEL里一直有维护版本虽然不是最新的但胜在稳定、经过生态验证适合生产环境求稳的场景。配置EPEL源的命令很固定# 先检查系统版本 cat /etc/redhat-release # 安装EPEL仓库 yum install -y epel-release # 装完以后验证一下 yum repolist | grep epel这里要注意一个细节如果你的系统是CentOS 8以上EPEL源的包名和配置方式跟CentOS 7略有不同CentOS 8需要额外启用PowerTools或CRB仓库才能装全依赖。CentOS Stream 9和Rocky Linux 9则要启用CRBCodeReady Builder仓库否则装Redis时可能提示缺依赖。所以在执行之前先确认系统的确切版本再决定后续步骤。1.3 更换国内镜像源解决下载慢的痛点EPEL源默认连的是官方服务器在国内的下载速度经常让人崩溃几百KB的包要下几分钟。这时候就需要把yum源切换成国内镜像源。国内常见的镜像源有阿里云、清华TUNA、华为云、腾讯云等我平时用得最多的是阿里云镜像。切换的逻辑很简单先把官方源的baseurl注释掉替换成镜像地址然后清理缓存重新建立缓存。以CentOS 7为例完整操作如下# 备份原始源配置 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak # 下载阿里云的CentOS 7源配置 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # EPEL源同样切换到阿里云镜像 curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo # 清理并重建缓存 yum clean all yum makecache替换完之后再用yum repolist检查一下确认仓库已经生效。这一步做完后面的安装速度会有质的提升原来需要几分钟的下载压缩到几十秒甚至几秒。需要提醒的是镜像源要和系统大版本严格匹配CentOS 7的源配置不能直接套到CentOS 8或Rocky Linux 9上否则会出现版本混乱、依赖冲突的问题。另外如果你用的是openEuler这类衍生发行版yum源配置思路类似但具体的源地址要对应openEuler官方或对应镜像站的repo文件不要盲目套用CentOS的配置。2. 安装与核心配置文件拆解2.1 yum安装Redis的具体过程源配置好之后安装就变得非常顺滑yum install -y redis执行过程中yum会自动解析依赖、下载并安装。CentOS 7默认装的是Redis 3.2.xCentOS 8默认能装到Redis 5.xRocky Linux 9默认则能装Redis 6.x。版本偏旧是yum安装最大的妥协点如果你对版本有硬性要求比如需要用Redis 7的新特性、或者公司规范指定了版本那就得考虑编译安装或用Docker。但求快求稳的场景yum装完直接能用这是最大的优势。装完之后验证一下redis-server --version能正常输出版本号就说明安装成功了。2.2 redis.conf 关键参数逐项解读安装只是第一步真正干活的是配置。Redis的配置文件在/etc/redis.confyum安装的版本默认就放在这里。我建议装完以后先别急着启动花几分钟把这几个核心参数看明白。bind 和 protected-mode决定谁能连上你的Redisbind 127.0.0.1 protected-mode yes这两个参数配合起来控制访问来源。默认只绑定回环地址意味着只有服务器本机可以访问外部IP无法连接。这是Redis默认相对安全的原因。如果你需要让其他机器访问有两个选择一是把bind改成实际IP或0.0.0.0二是关闭protected-mode。但无论哪种都必须同步设置密码否则Redis裸奔在公网上分分钟被扫描爆破。port服务监听端口默认6379除非端口冲突或被安全策略限制一般不用改。daemonize是否后台运行daemonize no很多人刚接触时觉得应该设成yes让Redis在后台跑。但在用systemd托管服务的场景下daemonize设为no反而是正确的——systemd负责管理进程生命周期如果Redis自己fork到后台systemd会认为主进程退出出现服务状态混乱的情况。yum安装的redis服务通过systemd启动时官方配置里这一项就是no不要去改。requirepass设置访问密码requirepass your_strong_password生产环境建议强制设置。密码设置要注意长度和复杂度别用redis123这种一眼就被爆破的弱口令。持久化配置RDB与AOF的选择save 900 1 save 300 10 save 60 10000 appendonly no默认开启RDB快照持久化AOF默认关闭。RDB是定期把内存数据写入磁盘恢复快、文件紧凑但两次快照之间的数据可能丢失。AOF记录每次写操作数据安全性更高但文件体积大、恢复慢。生产环境我一般建议开启AOF并且把appendfsync设为everysec在性能和数据安全之间取一个平衡点。这里不急着在安装阶段就纠结但理解这两个机制对后续排查数据丢失问题非常关键。2.3 配置文件改错的恢复办法改配置之前养成备份习惯这能救命cp /etc/redis.conf /etc/redis.conf.bak改坏了也不用慌把备份覆盖回去就行。改完配置必须重启Redis服务才能生效这点和很多即时生效的软件不一样容易踩坑。3. 服务管理与安全加固实操3.1 systemd 管理Redis服务的标准操作yum安装的Redis会自动注册成systemd服务管理命令非常标准化# 启动Redis systemctl start redis # 查看运行状态 systemctl status redis # 设置开机自启 systemctl enable redis # 重启服务改完配置后用 systemctl restart redis启动以后用redis-cli ping测试一下返回PONG就说明服务正常。这一步看似简单但很多人在这一步卡住PING不通首先要看服务状态和日志别急着怀疑配置。3.2 密码设置与客户端登录验证设置了requirepass之后直接用redis-cli进去敲命令会提示NOAUTH Authentication required这时候需要先认证redis-cli 127.0.0.1:6379 AUTH your_password也可以用一条命令直接带密码进入redis-cli -a your_password这种方式方便但有个隐患密码会出现在shell的历史记录里别人翻历史就能看到。更安全的做法是设置环境变量REDISCLI_AUTH或者在交互模式下再输入AUTH命令。3.3 防火墙与安全组最后一公里的坑Redis服务本机一切正常但其他机器死活连不上十有八九是防火墙拦了。CentOS 7默认用的是firewalld需要放行6379端口firewall-cmd --zonepublic --add-port6379/tcp --permanent firewall-cmd --reload如果你用的是云服务器还要检查云平台的安全组规则在控制台里放行对应的入方向端口。这一步漏掉改再多的bind配置也没用。3.4 外部访问场景的最小安全方案如果你的Redis需要对外提供服务比如让其他服务器连接我的建议是bind设为实际内网IP别用0.0.0.0。protected-mode设为no。requirepass务必设置强密码。防火墙只放行需要访问的源IP而不是对全开放。这套组合拳下来Redis暴露在外的风险基本可控。想再进一步加固可以配置ACL用户权限Redis 6给不同的客户端分配不同的命令权限而不是所有客户端共用一个大而全的密码。4. 基础使用与通用数据类型速览4.1 redis-cli 的实用玩法装完Redis日常打交道最多的就是redis-cli。除了最基础的set和get这几个操作频率也很高# 查看所有key redis-cli KEYS * # 查看服务端信息 redis-cli INFO # 查看当前库的key数量 redis-cli DBSIZE # 监控实时命令 redis-cli MONITOR # 查看慢日志 redis-cli SLOWLOG GET 10KEYS *在key很多的时候会造成阻塞生产环境建议用SCAN代替。MONITOR命令会把所有请求实时打印到终端排查问题利器但线上长时间开着会有性能损耗。4.2 五种基础数据类型的直观理解Redis能玩得转核心是理解它的数据类型。我用最直白的方式说一下String字符串最基础的类型key-value结构。可以用来缓存用户信息、计数器、分布式锁的value等。结合INCR/DECR命令还能实现高并发的自增统计比如文章阅读数、秒杀库存。Hash哈希适合存对象比如用户信息的多个字段。用一个key存整个对象比存多个String更省内存操作也更原子化。典型场景是购物车、用户资料缓存。List列表双向链表左边推右边取。可以用来做消息队列、时间线功能。BRPOP这类阻塞命令还能实现简单的延时任务。Set集合无序不重复。天然适合做去重统计、共同好友计算、随机抽奖。SINTER可以做交集运算比如找出两个用户共同关注的人。ZSet有序集合带分数的集合按分数排序。排行榜功能首选分数做排序权重成员是用户ID实时更新排名很方便。这五种类型一定要在动手实践之前有清晰认知写代码的时候选错类型后续维护成本会很高。比如该用Hash却拆成几十个String内存浪费不说原子性也没保障。4.3 从数据类型延伸到分布式锁搜索词里出现redis分布式锁非常高频。分布式锁本质上就是利用Redis单线程命令的原子性SET key value NX EX seconds这组命令组合起来保证同一时刻只有一个客户端能成功设置key就相当于拿到了锁。释放锁时需要比较value是否是自己设置的用Lua脚本保证判断删除的原子性这是面试和实战中的标准套路。这个场景能成立前提是Redis本身运行稳定、数据不丢。所以前面提到的持久化配置、安全加固都跟这类进阶用途是强相关的。基础打不牢上层应用再花哨也容易翻车。5. 常见问题排查与避坑实录5.1 安装阶段找不到redis包现象执行yum install redis提示没有可用包。排查思路先看yum repolist确认EPEL源是否已经启用。确认源配置文件的baseurl是否指向了正确的系统版本。试试yum search redis看能不能搜到相关包。如果源有问题重新执行epel-release安装或手动下载EPEL的rpm包安装。我在CentOS 7上遇到过EPEL源配置正确但装不上Redis的情况排查下来是残留的旧源缓存冲突。解决方法是yum clean all yum makecache重建缓存问题立刻消失。5.2 启动失败服务起不来现象systemctl start redis报错或者启动后立刻退出。排查思路# 查看详细错误 systemctl status redis -l # 看日志CentOS 7默认配置下Redis日志在/var/log/redis.log tail -100 /var/log/redis.log最常见的两个原因一是配置文件语法错误比如某个参数拼写不对或者格式有问题重新检查修改过的配置项二是端口被占用用ss -lntp | grep 6379看一下是否有其他进程占用端口。这里有个小坑CentOS 7的redis日志路径在不同版本里不完全一致有的是/var/log/redis.log有的是在配置文件的logfile项里指定。找不到日志时先redis-cli INFO看能不能连上能连上就说明服务其实起来了只是状态显示问题。5.3 外部连接不上bind和防火墙的双重拦路现象本机redis-cli能正常用外网机器TELNET测试6379端口不通。排查思路本机执行redis-cli -h 服务器IP PING测试本地能否通过非回环地址访问。检查配置文件的bind是否包含了需要访问的IP网段。检查防火墙firewall-cmd --list-all看6379是否放行。检查云安全组入方向规则。按这个顺序排查99%的问题能定位。我见过最离谱的一次是Redis配置、防火墙、安全组全对了还是连不上最后发现是公司出口IP被封了换个网络立马通。这种属于环境问题别死磕配置。5.4 密码认证失败现象AUTH password报ERR Client sent AUTH, but no password is set或WRONGPASS。两种情况分别处理提示但没设置密码说明这台Redis根本还没配置requirepass检查你连接的是不是预期的那台服务器或者配置文件里requirepass没生效。提示密码错误除了密码本身打错外还有一种可能是连接到了错误的实例。比如你改的是A服务器的配置但连的是B服务器密码自然不对。这种问题最有效的排查方式是先redis-cli INFO server看连接的到底是哪台。5.5 可视化工具连接失败搜索词里redis可视化工具出现频率很高很多人装完Redis第一步就是想用图形界面看看数据。目前主流的是Redis Desktop ManagerRDM和它的社区维护分支Another Redis Desktop ManagerARDM。这类工具连接失败的常见原因基本都能套用上面外部连接不上的思路。特别提醒一点新版RDM连接时要求填写SSH隧道、TLS配置默认留空就行别乱填。另外工具里填的密码是你Redis里requirepass设置的密码不是工具软件自己的密码这个低级错误真的有人犯。5.6 Docker方式安装Redis与yum方式怎么选搜索词里docker安装redis也很热门这里顺带对比一下。Docker方式的好处是版本选择自由、环境隔离彻底、清理方便一条命令就能拉起一个Redis实例docker run -d --name redis -p 6379:6379 redis:7yum方式的好处是原生集成systemd、开机自启、路径规范、运维习惯统一不用额外维护容器编排。我的建议是物理机或虚拟机上的长驻实例用yum装测试环境或需要多版本并行的场景用Docker两者不是替代关系。6. 最后补两句实在的经验装Redis这件事核心难点不在安装本身而在装完之后的配置思维。yum安装帮你省掉了编译和依赖的时间但配置文件里每一个参数都对应一类运行表现值得认真对待。我个人实际操作下来最深刻的感受是安全配置一定要在一开始就做好不要想着先跑起来后面再加Redis没有密码暴露在网络里最快几分钟就会被扫描工具发现并植入挖矿程序处理起来远比一开始配好密码麻烦得多。还有一个经常被忽略的点yum装完的Redis版本偏老用Redis 6的ACL、多线程IO特性会有局限如果你的核心业务依赖这些新能力尽早规划源码编译或容器化方案别等项目上线了才换底座。最后分享一个实用小技巧配置文件备份别只留一份每次改动前都留一个带日期后缀的快照比如redis.conf.bak-20250101这样出了问题可以快速回退到任意历史版本还能对比出到底是哪次改动引入的问题。这个习惯帮我省了很多排查时间也推荐给你。