什么是热点key?
对于web应用来说,用户消费的数据远远大于生产的数据,大多人使用都只是进行浏览,少数的人才会进行评论。对于web服务来说,某些热门的内容,读请求的量级可能是非常大的,数据库无法支持这么高并发的请求,基本都会使用Redis集群做缓存,但是如果如果热点数据的请求量过大,导致热点key所在Redis节点无法支撑,这种情况就需要采用额外的措施解决。当然Redis的性能还是非常好的,大多数业务量级都可以撑住,除非业务体量很大。
解决方案
服务端缓存
这种方式就是将热点数据同时缓存在服务器的内存中,增加一级缓存,如果数据在内存缓存中,就直接读,不用去请求Redis。如果数据没有再请求Redis,获取到数据再写入内存缓存中。这样就大大减少了Redis的压力,而且直接读内存的速度会更快。
备份热点key
为了不让热点key只请求到某一个redis节点,可以在热点key后面加一个随机数,这样热点数据可能就hash到不同的槽位,从而请求到不同的Redis节点,相当于一个key有了多个不同的备份,分散在多个Redis节点上。