大厂Redis热点key解决之道
点击上方“JavaEdge”,关注公众号
1 热点key产生原因
1.1 消费的数据>>>生产的数据
![](https://filescdn.proginn.com/66fe555a5af290c632cdfa9c4395f273/417fb2f423ba8a2a266bf7390bff8e95.webp)
比如电商秒杀活动、明星头条微博
大量发布、浏览的热点新闻、热点评论等读多写少场景
1.2 分片的请求量突破单点性能极限
![](https://filescdn.proginn.com/66fe555a5af290c632cdfa9c4395f273/417fb2f423ba8a2a266bf7390bff8e95.webp)
2 热点Key的危害
流量过于集中,突破物理网卡的极限
请求过多,缓存分片服务被打垮
缓存击穿
3 解决方案
3.1 服务端缓存
![](https://filescdn.proginn.com/66fe555a5af290c632cdfa9c4395f273/417fb2f423ba8a2a266bf7390bff8e95.webp)
![](https://filescdn.proginn.com/83837bef4c464e45cb7d3be4b83ba073/ac99510f5cf5e8d4c0958a1b6c4c7e5a.webp)
缺陷
![](https://filescdn.proginn.com/d99275df33e3be1872a88a9c424e3311/5347cbd853a661f208ebdd1f5f4bc7a0.webp)
缓存失效,多线程构建缓存问题
缓存丢失,缓存构建问题
脏读
3.2 使用Memcache、Redis
![](https://filescdn.proginn.com/66fe555a5af290c632cdfa9c4395f273/417fb2f423ba8a2a266bf7390bff8e95.webp)
![](https://filescdn.proginn.com/83837bef4c464e45cb7d3be4b83ba073/ac99510f5cf5e8d4c0958a1b6c4c7e5a.webp)
缺陷
![](https://filescdn.proginn.com/d99275df33e3be1872a88a9c424e3311/5347cbd853a661f208ebdd1f5f4bc7a0.webp)
内存资源浪费
脏读
3.3 本地缓存
![](https://filescdn.proginn.com/66fe555a5af290c632cdfa9c4395f273/417fb2f423ba8a2a266bf7390bff8e95.webp)
![](https://filescdn.proginn.com/83837bef4c464e45cb7d3be4b83ba073/ac99510f5cf5e8d4c0958a1b6c4c7e5a.webp)
缺陷
![](https://filescdn.proginn.com/d99275df33e3be1872a88a9c424e3311/5347cbd853a661f208ebdd1f5f4bc7a0.webp)
需要提前获知热点
缓存容量有限
不一致性时间增长
热点Key遗漏
3.4 随机后缀
![](https://filescdn.proginn.com/66fe555a5af290c632cdfa9c4395f273/417fb2f423ba8a2a266bf7390bff8e95.webp)
不带后缀
不带的后缀的有TTL带后缀
带后缀的没有TTL
后端查询DB更新缓存
查询带后缀返回给调用方
往期推荐
![](https://filescdn.proginn.com/028bde90f28b58100ed047b71c5adce0/98daa57b7e60aded29253a44d99e7448.webp)
目前交流群已有 800+人,旨在促进技术交流,可关注公众号添加笔者微信邀请进群
喜欢文章,点个“在看、点赞、分享”素质三连支持一下~
评论