INDEX
- §1 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