Skip to content

6.18 缓存监控 ​

概述

缓存监控是无表模块:解析 Redis INFO 返回内存、客户端、命中率、键空间等指标;内存降级时返回 mode=memory 标识。路由 GET /api/cache/info(登录即可)。

接口 ​

text
GET /api/cache/info   登录即可,log "缓存监控-查询信息"

返回内容 ​

text
内存降级(cache.UsingMemory()):
  → {mode:"memory", connected:false}(仅返回模式标识,无 INFO 指标)

Redis 模式:依次 INFO server/memory/stats/clients/keyspace + DBSIZE,
  解析(parseRedisInfo:# 注释行跳过,k:v 映射):
  version / uptime / usedMemory / usedMemoryPeak / maxMemory / fragRatio /
  connectedClients / expiredKeys / evictedKeys / totalCommands / totalConns /
  hits / misses / hitRate(hits/(hits+misses),两位小数)/
  keys(DBSIZE)/ keySpace[](每 db 的 keys/expires)

任一 INFO 失败 → connected=false 返回已解析部分

关键指标解读 ​

指标健康参考异常含义
moderedis(生产必须)memory = 已降级,多实例共享能力全失效
hitRate> 0.8偏低 → 键 TTL 过短或缓存未命中业务路径
usedMemory远小于 maxMemory接近 maxmemory → 需扩内存或清理
fragRatio< 1.5偏高 → 内存碎片(考虑碎片整理)
connectedClients稳定持续增长 → 连接泄漏
expiredKeys / evictedKeys有自然过期evictedKeys 持续增长 → maxmemory 淘汰(容量不足)

与整体架构的关系 ​

text
缓存分层:进程内(dictTextCache 等)→ Redis(跨实例共享)→ 数据库(唯一真相)
本接口观测的是 Redis 层;进程内层不可远程观测(重启即清)

降级影响面(mode=memory 时):
  限流计数 / 任务锁 / 在线用户 / JWT 黑名单 / 验证码 / 字典缓存 全部退化单机语义

运维用法 ​

text
日常巡检:mode 必须为 redis(生产红线)
容量规划:usedMemory/maxMemory 趋势 + evictedKeys 增速
命中率治理:hitRate 持续偏低时排查 TTL 策略(见 4.8 缓存架构设计 TTL 原则)
连接治理:connectedClients 对照 redis maxActive(连接池配置)

排障 ​

症状处理
mode=memoryRedis 不可用——查地址/密码/网络;恢复后自动回 redis(运行期探测)
connected=false 但 mode=redisINFO 命令失败(权限/超时);返回已解析部分
hitRate=0全部未命中——检查是否有业务直连 g.Redis 绕过 cache 门面
键数量异常多redis-cli KEYS 'easygoadmin:*' 抽查;对照键全集(4.8 缓存架构设计)

小蚂蚁云团队 · 提供技术支持