首页/数据/Redis 进阶速查/热点分布建模:Zipf 而非全随机
性能与排障129 条

热点分布建模:Zipf 而非全随机

真实访问多呈幂律分布;压测键分布用 Zipf 类模型比全随机更接近真实,避免低估热点键的放大效应。

Redis 进阶速查数据更新于 2026-10-13

键分布决定压测真实性

真实业务的访问分布几乎从不均匀:少量键承担大部分请求,长尾键访问稀疏,整体接近幂律。压测若使用完全随机的键,热点效应会被抹平,命中率、淘汰行为与单键放大都被低估。把键分布换成 Zipf 类倾斜模型,或使用高斯键模式模拟固定热点集合,才能压出接近线上的表现;模型参数必须写进报告,否则结果无法复现。

基本信息

要解决的问题全随机键分布低估热点放大效应
替代模型Zipf 倾斜分布、高斯分布键模式
常用工具memtier_benchmark 的 key-pattern 选项;redis-benchmark 用 -r 限定键范围
报告要素键数量、分布模型与参数、值大小、并发与线程数
配套观测latencystats 与 commandstats 观察单命令放大

典型使用场景

  • 缓存压测:重现热点键被反复读取的真实形态
  • 淘汰验证:倾斜分布下观察 maxmemory 与淘汰策略的实际取舍
  • 集群压测:热点集中在少数分片,随机分布与真实情况相去甚远
  • 容量规划:按倾斜分布推算单分片峰值,而不是看平均值
  • 回归对比:模型参数固定后,变更前后的数字才有可比性

倾斜分布压测写法

倾斜分布压测写法
memtier_benchmark --key-pattern=G:G --key-maximum=100000 -n 100000   # 高斯键模式
memtier_benchmark --key-pattern=G:G --key-maximum=100000 -c 20 -t 4  # 并发与线程一并记录
redis-benchmark -t get -n 200000 -c 50 -q -r 5000                   # 限定键范围制造热点
redis-cli --latency-history -i 15                                   # 压测期间看延迟波动
redis-cli INFO commandstats | head -5                               # 看单命令耗时与占比

分布模型对照

模型特点适用判断
全随机每个键被访问概率相同偏乐观,只适合当上限参考
Zipf 倾斜少数键占大部分请求接近缓存类真实业务
高斯键模式围绕热点集合波动热点集合相对固定的场景
顺序扫描键按序访问离线批处理类负载
倾斜分布下热点键的访问会集中在某个分片:集群压测先按分片看指标,只盯全局平均值会掩盖某个分片已经饱和的事实。
模型参数不写进报告,两次压测的数字就失去可比性——换个随机种子或键范围,差异可能超过调优本身带来的变化。

易错点

  • 全随机压测的高命中率假象:真实热点未重现,上线后命中率与延迟双双不及预期
  • 只调键范围不调倾斜度:键变多了但分布依旧均匀,热点问题还是压不出来
  • 模型参数不记录:结果无法复现,调优前后的对比失去意义
  • 集群压测只看全局指标:热点集中在一个分片,平均值掩盖了单分片瓶颈

数据来源与参考

  • Redis 官方实践:负载建模
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌