CentOS7通过EPEL安装Redis6.x:一条命令搞定,性能翻倍不踩坑
CentOS7通过EPEL安装Redis6.x:一条命令搞定,性能翻倍不踩坑

想给老旧的CentOS7装上Redis6.x,却被满屏的编译报错劝退?其实官方早已把新版Redis打包进EPEL,只要会用yum,五分钟就能跑起来,还自带systemd守护,重启不丢数据。下面这份笔记把每一步都拆到骨头里,照着敲就行。
为什么要用EPEL而不是源码编译
源码编译确实能拿到最新特性,但CentOS7默认的gcc才4.8,编译Redis6.x会卡在-std=c11,升级devtoolset又牵出一堆依赖。EPEL里的Redis6.x已经由Fedora官方用高版本gcc打好包,SELinux策略、systemd单元文件、日志轮转一次配齐,省得自己再踩坑。更重要的是,后续补丁yum update就能带走,比每次手动重新编译省太多时间。
前置检查:确认系统版本与仓库
先确认机器是CentOS7:cat /etc/centos-release | grep "7\.",如果返回空白,别继续。接着看EPEL有没有启用:yum repolist | grep epel,没结果就装:yum install -y epel-release。国内机器如果卡在metalink,可以把EPEL repo里的baseurl改成阿里云镜像,注释掉metalink那一行,保存后yum clean all再试。
一条命令安装Redis6.x

仓库就绪后,直接敲:yum install -y redis6,注意包名叫redis6而不是redis,后者默认是3.2老版本。安装完先看版本号:redis6-cli --version,只要看到6.x就稳了。此时配置文件落在/etc/redis6.conf,二进制叫redis6-server,和旧版彻底分离,互不干扰。
首次启动前的三处必改配置
1. 监听地址:默认只绑127.0.0.1,要让外网访问,把bind 127.0.0.1改成bind 0.0.0.0,同时把protected-mode yes改成no,否则远程连过来会被拒绝。
内存上限:取消maxmemory行的注释,按机器实际内存给一半,比如8G机器写maxmemory 4gb,再配淘汰策略maxmemory-policy allkeys-lru,避免OOM。
持久化:RDB快照保持默认900秒1次即可,如果业务不能丢数据,再打开AOF:appendonly yes,appendfsync everysec兼顾安全与速度。
systemd托管:开机自启与平滑重启

EPEL已经放好service文件,执行:systemctl enable --now redis6,看到active (running)就成功。改完配置别用systemctl restart redis6,而是systemctl reload redis6,Redis会走CONFIG REWRITE热加载,客户端几乎无感知。日志默认走journald,查错用journalctl -u redis6 -f,比翻/var/log/redis方便。
防火墙与SELinux:放行端口一步到位
CentOS7默认firewalld开启,放行6379:firewall-cmd --permanent --add-port=6379/tcp && firewall-cmd --reload。SELinux如果开着,需要加规则:setsebool -P redisenablenotify 1,否则AOF重写会报权限拒绝。不想折腾直接setenforce 0也行,但生产环境建议保留 enforcing。
性能压测:自带benchmark跑一圈
装完先别急着上线,用官方工具跑个基线:redis6-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 100000 -q,本机千兆网卡轻松破10万QPS。如果延迟高于1ms,检查是不是开了透明大页:cat /sys/kernel/mm/transparenthugepage/enabled,中括号是[always]就关:echo never > /sys/kernel/mm/transparenthugepage/enabled,写入/etc/rc.local保证重启仍然生效。
多实例共存:一台机器跑多个Redis6.x
业务需要缓存与队列隔离,直接复制配置:cp /etc/redis6.conf /etc/redis6-queue.conf,改三处:端口、pid文件、日志文件。再建一个systemd模板:cp /usr/lib/systemd/system/redis6.service /etc/systemd/system/redis6-queue.service,把ExecStart里的配置文件路径指向新文件。重载daemon后systemctl start redis6-queue,一台机器就能跑多个实例,端口、内存、持久化策略各自独立。
升级与回滚:yum history一键撤销
EPEL推送小版本时,直接yum update redis6,升级完redis6-cli INFO server能看到新版本号。如果升级后出问题,用yum history list找到最近一条事务ID,再yum history undo ID,依赖会自动回退,比源码make uninstall干净得多。
常见报错速查表
- Can't open the append-only file:SELinux没放行,用audit2allow -a -M redis6 && semodule -i redis6.pp生成策略。
• OOM command not allowed:内存达到maxmemory,客户端被禁止写入,调大maxmemory或改淘汰策略。
• Connection refused:防火墙没放行或bind地址写错,ss -lntp | grep 6379确认监听。
照着上面走完,CentOS7就能稳稳跑上Redis6.x,既享受多线程IO带来的性能翻倍,又保留yum管理的清爽。下次再有人劝你源码编译,把这篇笔记甩给他,省时省力。
