当有大量的线程访问同一个key超过了上千次,则可以被认为是热点key。解决办法大致有以下几种
1.缓存预热,在热点数据被用户访问之前将热点数据预热,可以手动预热也可以编写脚本预热,这样用户查询热点数据时,就不会直接访问数据库,降低数据库的压力
2.设置过期时间,给一些不常用的数据设置过期时间,减少冷数据的占用内存空间
3.内存淘汰策略,当redis中的数据过多,达到了maxmemory的值时,redis会开启内存淘汰策略。配置策略使用lru算法使用,淘汰redis中最近最少使用的数据,或者淘汰设置了过期时间的最近最少使用的数据
4.添加分片集群,添加redis集群,将热点数据分别分布到不同的集群中。降低单台redis节点的压力