首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
CentOS 7.5源码编译安装Redis 6.0.1完整指南
📅 2026/9/16 9:06:31
✍️ 爱科研究院
👁 阅读 3,247
1. 项目概述Redis作为当前最流行的内存数据库之一在缓存、消息队列、会话存储等场景中发挥着重要作用。虽然大多数Linux发行版都提供了Redis的预编译包但在生产环境中编译安装仍然是更推荐的方式。通过源码编译我们可以获得以下优势获得最新版本特性官方仓库的Redis版本往往较旧针对特定硬件进行优化编译灵活定制安装路径和配置避免系统包管理器的依赖冲突本教程将详细演示在CentOS 7.5/RHEL 7.x系统上从源码编译安装Redis 6.0.1的全过程。这个版本发布于2019年引入了诸多重要特性如ACL访问控制、客户端缓存、线程I/O等至今仍被广泛使用。2. 环境准备2.1 系统要求确认在开始前请确保您的系统满足以下要求CentOS 7.5/RHEL 7.x内核版本3.10.0-862及以上至少1GB可用内存编译过程需要约600MB2GB以上磁盘空间GCC 4.9或更高版本可以通过以下命令检查系统信息cat /etc/redhat-release # 查看系统版本 uname -r # 查看内核版本 free -h # 查看内存 df -h # 查看磁盘空间 gcc --version # 查看GCC版本2.2 安装编译依赖Redis是使用ANSI C编写的因此需要安装GCC编译器及相关工具链yum install -y gcc gcc-c make tcl注意如果是从最小化安装的系统开始可能还需要安装基本开发工具组yum groupinstall -y Development Toolstcl包是用于运行Redis测试套件的虽然不是必须的但强烈建议安装以便后续验证编译结果。3. 源码获取与编译3.1 下载Redis源码建议从Redis官方或国内镜像站下载源码包wget http://download.redis.io/releases/redis-6.0.1.tar.gz或者使用清华大学镜像站wget https://mirrors.tuna.tsinghua.edu.cn/redis/redis-6.0.1.tar.gz下载完成后验证文件完整性sha1sum redis-6.0.1.tar.gz # 官方SHA1校验值b8756e430479edc8dfb7d6d6cd3a402323eb437a3.2 解压与编译解压源码包并进入目录tar xzf redis-6.0.1.tar.gz cd redis-6.0.1开始编译make编译过程通常需要5-15分钟取决于系统性能。如果遇到编译错误常见原因和解决方法包括GCC版本过低# 安装devtoolset-7包含GCC 7.x yum install -y centos-release-scl yum install -y devtoolset-7 # 临时启用新版本GCC scl enable devtoolset-7 bash内存不足添加swap空间使用make MALLOClibc禁用jemalloc依赖缺失确保安装了所有必需的开发包3.3 验证编译结果编译完成后建议运行测试套件make test测试过程可能需要30分钟以上。如果看到\o/ All tests passed without errors!则表示一切正常。4. 安装与配置4.1 安装Redis指定安装目录建议使用/usr/local/redismake PREFIX/usr/local/redis install这会将Redis可执行文件安装到/usr/local/redis/bin目录下。4.2 创建配置文件目录mkdir /usr/local/redis/etc cp redis.conf /usr/local/redis/etc/4.3 基本配置调整编辑配置文件vim /usr/local/redis/etc/redis.conf建议修改以下关键参数daemonize yes # 以守护进程方式运行 bind 0.0.0.0 # 监听所有网络接口生产环境应限制 protected-mode no # 关闭保护模式如有防火墙可不关 requirepass yourpassword # 设置访问密码 maxmemory 2gb # 根据系统内存调整 maxmemory-policy allkeys-lru # 内存满时的淘汰策略 dir /var/lib/redis # 持久化文件存储目录重要安全提示如果Redis需要暴露在公网必须设置强密码并考虑启用ACL4.4 创建数据目录mkdir -p /var/lib/redis chown -R redis:redis /var/lib/redis5. 系统集成5.1 创建Redis用户为安全起见应使用专用用户运行Redisgroupadd redis useradd -r -g redis -s /bin/false redis chown -R redis:redis /usr/local/redis5.2 配置环境变量将Redis添加到系统PATHecho export PATH$PATH:/usr/local/redis/bin /etc/profile.d/redis.sh source /etc/profile.d/redis.sh5.3 创建Systemd服务创建服务文件/etc/systemd/system/redis.service[Unit] DescriptionRedis In-Memory Data Store Afternetwork.target [Service] Userredis Groupredis ExecStart/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf ExecStop/usr/local/redis/bin/redis-cli shutdown Restartalways Typenotify [Install] WantedBymulti-user.target启用并启动服务systemctl daemon-reload systemctl enable redis systemctl start redis检查服务状态systemctl status redis6. 验证与测试6.1 基本功能测试redis-cli 127.0.0.1:6379 AUTH yourpassword OK 127.0.0.1:6379 SET test Hello Redis OK 127.0.0.1:6379 GET test Hello Redis 127.0.0.1:6379 INFO Server # 查看服务器信息6.2 性能测试redis-benchmark -h 127.0.0.1 -a yourpassword -q -n 1000007. 高级配置与优化7.1 内存优化在redis.conf中调整以下参数maxmemory 4gb # 根据可用内存设置 maxmemory-policy volatile-lru # 只淘汰有过期时间的key hash-max-ziplist-entries 512 # 小哈希使用更少内存7.2 持久化配置根据需求选择RDB或AOF# RDB快照 save 900 1 # 15分钟内至少1个key变化 save 300 10 # 5分钟内至少10个key变化 # AOF日志 appendonly yes # 启用AOF appendfsync everysec # 每秒同步7.3 安全加固启用ACLRedis 6redis-cli 127.0.0.1:6379 ACL SETUSER admin on adminpassword ~* all限制危险命令rename-command FLUSHDB rename-command CONFIG 8. 常见问题解决8.1 启动失败排查检查日志journalctl -u redis -n 50 --no-pager常见错误地址已在使用检查是否有其他Redis实例运行权限问题确保redis用户有访问权限配置错误使用redis-server --test-memory 256测试内存8.2 性能问题延迟高检查redis-cli --latency监控延迟避免使用KEYS *等阻塞命令内存不足调整maxmemory和淘汰策略考虑使用Redis集群8.3 升级注意事项小版本升级# 停止旧实例 systemctl stop redis # 编译安装新版本 make make install # 重启服务 systemctl start redis大版本升级先测试数据兼容性考虑使用复制方式迁移9. 维护与管理9.1 日常监控使用INFO命令redis-cli -a yourpassword INFO关键指标监控内存使用率连接数命中率9.2 备份策略RDB快照备份cp /var/lib/redis/dump.rdb /backup/redis-$(date %F).rdbAOF备份redis-cli -a yourpassword BGREWRITEAOF9.3 日志轮转配置logrotatecat /etc/logrotate.d/redis EOF /var/log/redis.log { daily rotate 30 compress delaycompress missingok notifempty create 644 redis redis } EOF10. 扩展与进阶10.1 启用TLS加密生成证书openssl genrsa -out redis.key 2048 openssl req -new -key redis.key -out redis.csr openssl x509 -req -days 365 -in redis.csr -signkey redis.key -out redis.crt配置Redistls-port 6379 tls-cert-file /path/to/redis.crt tls-key-file /path/to/redis.key10.2 构建Redis集群准备多个节点使用redis-cli创建集群redis-cli --cluster create \ 192.168.1.1:6379 \ 192.168.1.2:6379 \ 192.168.1.3:6379 \ --cluster-replicas 110.3 使用Redis模块下载编译模块git clone https://github.com/RedisJSON/RedisJSON.git cd RedisJSON make加载模块loadmodule /path/to/rejson.so11. 性能调优实战11.1 内核参数优化编辑/etc/sysctl.confvm.overcommit_memory 1 net.core.somaxconn 65535应用设置sysctl -p11.2 Redis专用优化透明大页禁用echo never /sys/kernel/mm/transparent_hugepage/enabled内存分配策略# 在redis.conf中 maxmemory-policy allkeys-lru11.3 网络优化调整TCP参数# 在redis.conf中 tcp-backlog 65535 timeout 0使用Unix域套接字unixsocket /tmp/redis.sock unixsocketperm 77012. 监控与告警12.1 Prometheus监控安装redis_exporterwget https://github.com/oliver006/redis_exporter/releases/download/v1.45.0/redis_exporter-v1.45.0.linux-amd64.tar.gz tar xzf redis_exporter*.tar.gz ./redis_exporter Prometheus配置scrape_configs: - job_name: redis static_configs: - targets: [localhost:9121]12.2 关键告警规则示例告警规则groups: - name: redis rules: - alert: RedisDown expr: up{jobredis} 0 for: 1m - alert: RedisOutOfMemory expr: redis_memory_used_bytes / redis_memory_max_bytes 0.9 for: 5m13. 安全加固进阶13.1 网络层防护防火墙规则firewall-cmd --permanent --add-rich-rulerule familyipv4 source address192.168.1.0/24 port port6379 protocoltcp accept firewall-cmd --reload绑定特定IPbind 192.168.1.10013.2 命令过滤禁用危险命令rename-command FLUSHDB rename-command FLUSHALL rename-command CONFIG 13.3 定期审计检查异常连接redis-cli -a yourpassword CLIENT LIST监控慢查询slowlog-log-slower-than 10000 # 10毫秒 slowlog-max-len 12814. 备份与恢复策略14.1 自动化备份方案创建备份脚本/usr/local/bin/redis-backup.sh#!/bin/bash DATE$(date %Y%m%d) BACKUP_DIR/backup/redis mkdir -p $BACKUP_DIR redis-cli -a yourpassword SAVE cp /var/lib/redis/dump.rdb $BACKUP_DIR/dump-$DATE.rdb find $BACKUP_DIR -name *.rdb -mtime 30 -delete添加到cron0 2 * * * /usr/local/bin/redis-backup.sh14.2 灾难恢复演练模拟故障systemctl stop redis rm /var/lib/redis/dump.rdb恢复过程cp /backup/redis/dump-latest.rdb /var/lib/redis/dump.rdb chown redis:redis /var/lib/redis/dump.rdb systemctl start redis15. 性能基准测试15.1 定制化测试模拟生产负载redis-benchmark -h 127.0.0.1 -a yourpassword \ -t set,get -n 1000000 -c 100 -d 256管道测试redis-benchmark -h 127.0.0.1 -a yourpassword \ -t set,get -n 1000000 -P 1615.2 结果分析关键指标解读QPS每秒查询数反映吞吐量延迟分布P50/P95/P99延迟值错误率请求失败比例16. 容器化部署方案16.1 Docker部署创建DockerfileFROM centos:7 RUN yum install -y gcc make tcl COPY redis-6.0.1.tar.gz . RUN tar xzf redis-6.0.1.tar.gz \ cd redis-6.0.1 \ make \ make PREFIX/usr/local/redis install COPY redis.conf /usr/local/redis/etc/ EXPOSE 6379 CMD [/usr/local/redis/bin/redis-server, /usr/local/redis/etc/redis.conf]构建并运行docker build -t redis-6.0.1 . docker run -d -p 6379:6379 --name myredis redis-6.0.116.2 Kubernetes部署示例StatefulSet配置apiVersion: apps/v1 kind: StatefulSet metadata: name: redis spec: serviceName: redis replicas: 3 selector: matchLabels: app: redis template: metadata: labels: app: redis spec: containers: - name: redis image: redis:6.0.1 ports: - containerPort: 6379 volumeMounts: - name: redis-data mountPath: /data volumeClaimTemplates: - metadata: name: redis-data spec: accessModes: [ ReadWriteOnce ] resources: requests: storage: 1Gi17. 多实例部署模式17.1 主从复制配置从节点# 在从节点的redis.conf中 replicaof 192.168.1.100 6379 masterauth yourpassword验证复制状态redis-cli -a yourpassword INFO replication17.2 哨兵模式哨兵配置示例sentinel.confsentinel monitor mymaster 192.168.1.100 6379 2 sentinel auth-pass mymaster yourpassword sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 60000启动哨兵redis-sentinel /path/to/sentinel.conf18. 客户端连接管理18.1 连接池配置Java客户端示例JedisJedisPoolConfig poolConfig new JedisPoolConfig(); poolConfig.setMaxTotal(128); poolConfig.setMaxIdle(32); poolConfig.setMinIdle(8); JedisPool jedisPool new JedisPool(poolConfig, localhost, 6379, 2000, yourpassword);18.2 连接限制Redis服务端配置maxclients 10000 timeout 30019. 数据迁移策略19.1 RDB文件迁移在源Redis执行redis-cli -a yourpassword SAVE复制RDB文件到目标服务器scp /var/lib/redis/dump.rdb usernewserver:/var/lib/redis/确保文件权限正确后启动目标Redis19.2 在线迁移工具使用redis-cliredis-cli -h source_host -a source_password --rdb dump.rdb redis-cli -h target_host -a target_password --pipe dump.rdb20. 版本升级指南20.1 滚动升级步骤升级从节点故障转移升级原主节点恢复原主节点20.2 兼容性检查检查版本变更日志测试关键命令验证持久化文件兼容性21. 生产环境检查清单21.1 部署前检查[ ] 内存配置是否合理[ ] 持久化策略是否配置[ ] 监控系统是否就绪[ ] 备份方案是否测试21.2 运行时检查[ ] 内存使用是否正常[ ] 是否有慢查询[ ] 连接数是否合理[ ] 复制延迟是否监控22. 性能调优案例22.1 高并发场景优化现象QPS达到瓶颈解决方案启用管道增加连接池大小优化数据结构22.2 大key问题处理识别大keyredis-cli -a yourpassword --bigkeys解决方案拆分大key使用SCAN代替KEYS调整数据结构23. 故障处理手册23.1 常见故障场景内存溢出检查maxmemory配置调整淘汰策略主从不同步检查网络连接验证密码配置23.2 故障恢复流程收集日志和指标确定影响范围实施恢复方案验证数据完整性24. 资源规划建议24.1 硬件选型内存数据集大小的1.5倍CPU4核以上磁盘SSD优先24.2 容量规划监控内存增长趋势预留30%缓冲空间考虑分片方案25. 最佳实践总结始终使用密码认证定期备份持久化文件监控关键性能指标保持版本更新遵循最小权限原则在实际生产环境中我发现以下几个经验特别有价值编译时使用make MALLOClibc可以避免jemalloc在某些环境下的问题设置vm.overcommit_memory1能防止Redis在内存不足时被OOM killer终止定期执行redis-cli --bigkeys分析有助于发现潜在的性能瓶颈
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/9/16 9:06:31
从世界-行动模型到具身大脑:开放世界物理智能路线图
2026/9/16 9:06:31
macOS 27实用更新盘点:随航触控与系统录音体验
2026/9/16 9:01:30
AI基础设施化:技术演进与行业落地实践
2026/9/16 9:46:48
Simulink零基础实现卷积编码与Viterbi译码
2026/9/16 9:46:48
研究生必备:8款实测有效的降AI率工具与使用策略
2026/9/16 9:46:48
BDMA.zip_BDMA固件解析:嵌入式系统中伪ZIP格式的DMA加速配置包
2026/9/16 9:46:48
医疗智能客服系统架构设计与AI应用实践
2026/9/16 9:46:48
Spring容器管理Bean的三种核心方式详解
2026/9/16 9:41:48
Arduino UNO Q热成像+路径规划实现山火隔离带智能生成
2026/9/16 0:00:15
嵌入式三大高薪赛道:车规功能安全、RISC-V固件架构、边缘AI部署
2026/9/16 0:00:15
Zephyr 移植指南:SAM R34 Xplained Pro(samr34_xpro)评估板支持与 LoRa 开发实战
2026/9/16 0:00:15
纯HTML+SVG图解工具:出版级架构图的语义化生成方案
2026/9/15 13:08:25
拯救者Y7000黑屏故障排查与维修实战指南
2026/9/16 7:38:03
AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验
2026/9/16 1:54:57
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化