中间件 | Redis - [big-key & hot-key]

@

§1 big-key

分类

  • 字符串型 big-key:字符串最大可以到 512M
  • 集合型 big-key:集合个数可以到 2^23

问题

  • 内存空间不均匀
  • 指令耗时增加:redis 是单线程的,部分操作的时间复杂度是 O(n) 的,big-key 可能导致单个指令耗时较长
  • 网络传输耗时增加:获取 big-key 消耗的网络传输成本增加
  • 不当使用时可能造成 jvm 的 oom

一般情况下,使用频率较低,使用方式正确的 big-key 是允许存在的,只会影响内存使用情况,导致不均匀

指令
./redis-cli bigkeys
可以找生成一个 big-key 分析摘要输出如下信息

  • 整个 key 空间具有多少key
  • 最大的字符串 key 占了多少字节
  • 下面个数据类型的元素个数/最大长度,占所有 key 的比例和其平均大小
    • list 元素个数
    • hash 字段个数
    • string 字节数
    • stream entry 个数
    • set 元素个数
    • zset 元素个数

debug key bigkey
可以查看某个key是不是 big-key,主要是查看此 key value序列化之后的长度

处理

使用频率高 业务复杂 取值方式无错误 处理方式
1 可以忽略
需全量读写 转 oss
1 拆分
1 优化业务实现方式
1 1 拆分、转其他存储比如 es、优化业务

hot-key

指令
./redis-cli hotkeys

posted @ 2025-05-21 10:34  问仙长何方蓬莱  阅读(3)  评论(0)    收藏  举报