Redis源码编译安装指南:从入门到性能调优实战

Redis源码编译安装指南:从入门到性能调优实战 一

文章目录CloseOpen

Redis源码编译安装全流程

从官网下载最新稳定版源码包,解压后进入目录。编译前先装好gcc、make等基础工具链,CentOS用yum install -y gcc make,Ubuntu用apt-get install build-essential。关键编译参数别漏掉:

  • make MALLOC=libc 指定内存分配器
  • make PREFIX=/opt/redis install 自定义安装路径
  • make test 跑完所有单元测试再部署
  • 编译出错常见于依赖缺失,比如遇到jemalloc.h not found就补装jemalloc-devel包。装完后记得把src/下的redis-server、redis-cli等二进制文件拷到系统PATH路径。

    核心配置参数调优指南

    redis.conf里这几个参数直接影响性能:

    参数 默认值 生产环境
    maxmemory 0(无限制) 物理内存的70%-80%
    tcp-backlog 511 与系统somaxconn保持一致
    timeout 0(永不超时) 300-600秒防僵死连接

    内存碎片率超过1.5就得警惕,用INFO memory监控时重点看mem_fragmentation_ratio指标。大key问题用redis-cli bigkeys扫描,超过10KB的string或100个元素的hash/list都算风险点。

    持久化与高可用实战技巧

    RDB和AOF混合使用最稳妥:

  • RDB配置save 900 1这种规则时,至少保证15分钟-1小时级别的备份频率
  • AOF重写阈值设auto-aof-rewrite-percentage 100配合auto-aof-rewrite-min-size 64mb
  • 主从复制时repl-backlog-size 设为内存的10%-20%
  • 遇到性能瓶颈先看慢查询日志,slowlog-log-slower-than 10000表示记录超过10ms的命令。批量操作记得用pipeline,网络往返次数能降90%以上。集群模式下节点数控制在6-12个最合理,超过16个反而影响 gossip 协议效率。


    主从复制延迟这事儿,说白了就是数据从主库传到从库的速度跟不上。首先得把repl-backlog-size这个缓冲区调大点,一般设成主库内存的10%-20%比较合适。比如你主库有16GB内存,缓冲区就设个2GB-3GB,这样即使网络有点波动,从库也能从缓冲区里捞数据,不至于动不动就全量同步。repl-timeout也别抠搜,60-120秒这个范围比较保险,特别是跨机房的场景,网络延迟大点也能扛住。

    要是发现从库老是在做全量同步,那八成是client-output-buffer-limit设小了。这个参数控制主库给从库发数据的缓冲区大小,生产环境 给replica类型调大到1GB-2GB。还有个隐藏的坑是主库的repl-backlog-ttl,默认1小时其实有点短,碰到从库维护或者网络故障,缓冲区数据可能还没等从库连上就被清了,这时候可以适当延长到2-4小时。平时多盯着点INFO replication里的lag指标,延迟超过30秒就得赶紧查了。


    常见问题解答

    编译Redis时出现”jemalloc.h not found”错误怎么办?

    这是缺少jemalloc内存管理库导致的,CentOS/RHEL系统执行yum install jemalloc-devel,Ubuntu/Debian系统执行apt-get install libjemalloc-dev。如果仍需要libc分配器,可强制指定make MALLOC=libc参数编译。

    生产环境Redis内存应该设置多大?

    设置为物理内存的70%-80%,需要保留20%-30%内存给系统和其他进程。通过maxmemory 8gb这样的配置指定,注意单位可以是kb、mb、gb。同时要设置maxmemory-policy定义淘汰策略。

    如何监控Redis内存碎片情况?

    使用INFO memory命令查看mem_fragmentation_ratio指标,1.0-1.5属于正常范围,超过1.5 重启实例或通过MEMORY PURGE命令主动清理。长期偏高可能需要调整activedefrag相关参数。

    Redis性能突然下降该如何排查?

    先检查slowlog get 10查看最近慢查询,再用INFO commandstats分析命令耗时。网络问题可查看redis-cli latency,内存问题关注used_memory是否接近maxmemory。 配置slowlog-log-slower-than 10000记录10ms以上操作。

    主从复制延迟大怎么优化?

    增大repl-backlog-size到内存的10%-20%,提升repl-timeout到60-120秒。检查主节点INFO replicationrepl_backlog_active状态,如果从节点频繁全量同步,可能需要调大client-output-buffer-limit

    原文链接:https://www.mayiym.com/17389.html,转载请注明出处。
    0
    显示验证码
    没有账号?注册  忘记密码?

    社交账号快速登录

    微信扫一扫关注
    如已关注,请回复“登录”二字获取验证码