温馨提示×

Ubuntu Redis内存使用如何监控

小樊
62
2025-09-19 06:43:34
栏目: 云计算

Ubuntu系统监控Redis内存使用的常用方法

1. 使用Redis内置命令实时查看内存使用

Redis自带的INFO命令是监控内存的基础工具,可通过以下细分命令获取针对性数据:

  • 查看完整内存信息:执行redis-cli INFO memory,返回结果包含used_memory(Redis实际使用的内存字节数)、used_memory_human(易读格式,如KB/MB/GB)、used_memory_rss(操作系统分配给Redis的内存字节数)、total_system_memory(系统总内存)等关键指标。其中,used_memory反映Redis自身内存占用,used_memory_rss反映操作系统层面的内存消耗,若两者差距过大可能存在内存碎片。
  • 快速获取内存概览:执行redis-cli INFO memory | grep -E "used_memory|used_memory_human|used_memory_rss",可过滤出内存相关的核心数据,便于快速查看。
  • 实时监控命令执行:若需观察Redis的实时内存变化(如某个命令的内存消耗),可使用redis-cli MONITOR,它会输出所有客户端的实时命令及执行时间,但需注意该命令会增加Redis负载,不建议长期开启。

2. 通过可视化工具实现长期监控

可视化工具能更直观地展示内存趋势,适合生产环境长期监控:

  • RedisInsight(官方工具)
    安装:在Ubuntu终端执行sudo apt-get install redisinsight
    连接:启动后通过redisinsight --uri redis://localhost:6379连接本地Redis实例;
    功能:主界面可直接查看内存使用量的实时曲线,还能分析键值分布、慢查询等,支持生成内存优化建议。
  • AnotherRedisDesktopManager(开源工具)
    安装:通过Snap包管理器执行sudo snap install redis-desktop-manager
    连接:打开应用后输入Redis地址(默认localhost:6379)即可连接;
    功能:在控制台输入INFO MEMORY命令,可查看详细内存信息,同时支持键值浏览、批量操作等功能。

3. 利用第三方监控系统(如Prometheus+Grafana)

若需要集中监控多个Redis实例或集成到现有监控体系,可使用Prometheus+Grafana组合:

  • 部署Redis Exporter:Redis Exporter是将Redis指标转换为Prometheus可采集格式的工具。在Ubuntu上执行以下命令安装:
    wget https://github.com/oliver006/redis_exporter/releases/download/v1.22.0/redis_exporter-v1.22.0.linux-amd64.tar.gz
    tar -xzf redis_exporter-v1.22.0.linux-amd64.tar.gz
    sudo mv redis_exporter /usr/local/bin/
    
  • 配置Prometheus:编辑Prometheus的prometheus.yml文件,添加Redis Exporter的抓取任务:
    scrape_configs:
      - job_name: 'redis'
        static_configs:
          - targets: ['localhost:9121']  # Redis Exporter默认端口
    
  • 启动Prometheus:执行./prometheus --config.file=prometheus.yml启动服务,访问http://localhost:9090进入Web UI。
  • 创建Grafana Dashboard:在Grafana中添加Prometheus数据源,导入Redis监控模板(如ID为763的官方模板),即可查看内存使用量的实时仪表盘,支持设置告警规则(如内存使用超过80%时触发告警)。

4. 关键内存指标解读

监控时需重点关注以下指标,以判断Redis内存状态:

  • used_memory:Redis实际使用的内存,若持续增长可能因数据量增加或内存泄漏;
  • used_memory_rss:操作系统分配给Redis的内存,包含Redis自身内存及碎片,若远大于used_memory需考虑优化内存碎片(如执行MEMORY PURGE命令);
  • used_memory_human:易读的内存大小,便于快速判断内存占用规模;
  • mem_fragmentation_ratio(计算值:used_memory_rss/used_memory):内存碎片率,理想值为1(无碎片),若大于1.5说明碎片较多,需优化。

0