数据倾斜
节点上分配的槽数量不均匀
-
redis-trib.rb rebalance 127.0.0.1:7000
谨慎使用;
不同槽对应的键值数量差异较大
- CRC16 正常情况下比较均匀;
- 可能存在 hash_tag;
-
cluster countkeysinslot {slot}
获取槽对应键值个数;
包含 bigkey
- 例如大字符串,几百万元素的 hash,set 等;
- 在从节点上检查:
redis-cli --bigkeys
; - 通过优化数据结构优化 bigkey 问题;
内存相关配置不一致
- 相关优化参数:
hash-max-ziplist-value
,set-max-intset-entries
等; - 定期检查配置一致性;
请求倾斜
- 俗称“热点 key”;
优化
- 避免 bigkey;
- 热键不要用 hash_tag;
- 当一致性不高时,可以用本地缓存 + MQ;