热Key问题简介以及解决方案(一看就会,简单,明了)

1.前言

现在大多数互联网系统都用到了缓存Redis,的确Redis很好用,很多时候可以避免流量直接打到数据库,且最高QPS也能支持10S以上,但是随着时代变迁,系统经受了越来越大的挑战,Redis集群的抗并发能力的确很强,但是如果只是一个单一的key,所有请求都请求的话,那很可能包含这台key的物理机会无法承受这么高流量的冲击,导致宕机,这也就是我们说的热key问题。

2.解决方案

对于热key的问题我们首先就是要将他的流量分散开,通过多个点去分担机器的压力,作为基本思路。

  • 方案1:JVM缓存吗,也叫本地缓存。

  • 这样的一个集群内所有机器都可以去分担这个流量,假设有200台机器,那么每台机器都可以去做一个本地缓存,每个请求进来后,每台机器如果有本地缓存的话,就可以不用走到redis中,从而可以直接获得结果,至于本地缓存方法很多,晚上捞一个就可以了。

  • 方案2:随机的Redis Key 。

  • 比如通过得知Redis集群的分片数量,去设置这个key值,例如key+N,每次N为0-N的一个随机数,每个key内存的值都是一样的,只是变成了多个key,请求进来的时候,也是通过随机后的key去缓存内取,这样可以将redis集群的key分散到不同的机器上,不至于让单一一个物理机宕机。

3.注意事项

由于缓存与缓存之间没有及时同步,建议放的内容短期内变化不要太大且过期时间设置短一些,这样如果对于不同用户的页面展示也要有好一些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值