可以使用一个HashMap,在你发现热点key以后,把热key加载到系统的jvm中。
针对这种热key请求,就会直接从jvm中取,而不会走本地redis层。
假设此时有十万个针对同一个key的请求过来,如果没有本地缓存,这十万个请求就会直接请求到同一台redis上了。现在可以假设,你的应用层有50台机器,同时每台机器上都有jvm缓存。这十万个请求平均分散开来,每个机器有2000个请求,这样就会从jvm中直接取到值,然后返回数据。避免了十万个请求同时访问同一个redis的情景。
这个方案需要不让热key在同一台机器上就行。我们把这个key,同时存在多个redis上。接下来,当有热点key请求进来的时候,我们就在有备份的redis上随机抓取一台,进行访问取值,返回数据。