← 返回首页
Redis 如何处理大 Key (BigKey) 和 热 Key (HotKey)?
大 Key (BigKey):
定义:Value 过大(如 String > 10KB, Hash/List > 10000 元素)。
危害:网络阻塞(单次传输慢)、阻塞单线程(删除/序列化耗时)、内存不均。
发现:redis-cli --bigkeys 或 RDB 分析工具。
解决:
拆分:大 Hash 拆成多个小 Hash(如 user:1 -> user:1_1, user:1_2)。
异步删除:使用 UNLINK 命令替代 DEL(非阻塞删除)。
压缩:对 Value 进行压缩存储。
热 Key (HotKey):
定义:访问频率极高的 Key(如突发热点新闻)。
危害:单节点网卡/CPU 打满,造成集群负载不均。
发现:监控工具(如 redis-monitor)、抓包分析。
解决:
多级缓存:本地缓存 (Guava/Caffeine) + Redis。
副本读写分离:为热 Key 建立多个从副本,分散读流量。
Key 冗余:将热 Key 复制多份(如 hot_key_1, hot_key_2),客户端随机访问。