当前位置: 首页 > article >正文

Redis中的Hot key排查和解决思路

什么是Hot key

Hot key其实就是被频繁访问的key,比普通的key访问量要高于十倍或者几十倍不等。例如:

  1. QPS集中在特定的Key:实例的总QPS(每秒查询率)为10,000,而其中一个Key的每秒访问量达到了7,000。
  2. 带宽使用率集中在特定的Key:对一个拥有上千个成员且总大小为1 MB的HASH Key每秒发送大量的HGETALL操作请求。
  3. CPU使用时间占比集中在特定的Key:对一个拥有数万个成员的Key(ZSET类型)每秒发送大量的ZRANGE操作请求。

Hot key会引发的问题

  1. 占用大量的CPU资源,影响其他请求并导致整体性能降低。
  2. 集群架构下,产生访问倾斜,即某个数据分片被大量访问,而其他数据分片处于空闲状态,可能引起该数据分片的连接数被耗尽,新的连接建立请求被拒绝等问题。
  3. 在抢购或秒杀场景下,可能因商品对应库存Key的请求量过大,超出实例处理能力造成超卖。
  4. 热Key的请求压力数量超出实例的承受能力易造成缓存击穿,即大量请求将被直接指向后端的存储层,导致存储访问量激增甚至宕机,从而影响其他业务。

热Key产生的原因

预期外的访问量陡增,如突然出现的爆款商品、访问量暴涨的热点新闻、直播间某主播搞活动带来的大量刷屏点赞

  1. 提前预测:比如在常见的电商系统中会在秒杀、抢购等业务开始前就能预测出热key
  2. 实时收集:在客户端或者服务端可以对实时数据进行采集
  3. 使用redis-cli的hotkeys命令

如何优化Hot key的问题

  1. 多级缓存:通过多级缓存的方式,可以减少系统对Redis的交互,不仅能提升用户体验,还能减轻系统压力
  2. 拆分:将一个热点key拆分为多个小key,然后把这些key分散到多个实例上,这样在用户进行请求时可以根据一定的规则算出请求的小key,多次请求就能被分散到不同的实例上避免hot key问题
  3. 限流:这个是兜底的问题,避免Redis缓存击穿,全部请求打到数据库,造成系统崩溃

http://www.kler.cn/a/446683.html

相关文章:

  • arm Rk3588 更新固件
  • wxWidgets使用wxStyledTextCtrl(Scintilla编辑器)的正确姿势
  • 基于层次化设计方法,设计一个16位二进制全加器
  • 搜索召回:倒排召回
  • 批量DWG文件转dxf(CAD图转dxf)——c#插件实现
  • Elasticsearch-DSL高级查询操作
  • B树的性质和插入过程
  • 入侵他人电脑,实现远程控制(待补充)
  • 怿星科技联合赛力斯举办workshop活动,进一步推动双方合作
  • BERT outputs
  • webpack如何自定义插件?示例
  • 如何在 .NET Core 中轻松实现异步编程并提升性能
  • 大数据技术与应用——大数据处理技术(一)(山东省大数据职称考试)
  • 踩坑记录: Python的工作路径(working dircetory)
  • 基于STM32的自学习智能小车设计
  • 微信小程序实现上传图片自定义水印功能、放大缩小旋转删除、自定义字号颜色位置、图片导出下载、图像预览裁剪、Canvas绘制 开箱即用
  • 【深入理解网络协议】
  • 【学习总结|DAY020】Java FIle、字符集、IO流
  • WPF系列二:窗口模式调整
  • 什么是Edge SCDN?
  • Kibana8.17.0在mac上的安装
  • Midjourney制作APP logo教程
  • Ubuntu20.04 编译运行 ORBSLAM2_with_pointcloud_map(以RGBD Orbbec Astra+为例)保姆级教程
  • Http 中 GET 和 POST 的区别?应用场景都有哪些?
  • imu相机EKF
  • 【数据可视化案例】探索影响不同国家预期寿命的主要因素