Redis如何存储热点数据

Mysql中存在100w条热点数据,Redis中只存储20w条,如何保证Redis中都是热点数据

主要考察如何Redis的数据淘汰策略

  • LFU算法:Least Frequently Used,最不经常使用算法。
  • LRU算法:Least Recently Used,近期最少使用算法。

Redis4.0之后为我们提供了8中淘汰策略,但真正意义上的只有5种。其中针对Random、LRU、LFU提供了两种不同数据范围的策略,一种是volatile针对设置了超时时间的,一种是没有设置超时时间的。具体的,这5种分别是:

  1. noeviction:这种策略表示不进行数据淘汰,同时也是Redis的默认淘汰策略,当缓存写满时,Redis就不再提供写服务了,写请求直接返回失败。
  2. Random:随机策略分为两种,一种是volatile,这种是设置了过期时间的数据集,另外一种是allKeys,这种是包含了所有的数据,当我们缓存满了的时候,这种策略就会在我们的数据集中进行随机删除。
  3. volatile-ttl:在设置了超时时间的数据集中,按照过期时间的先后顺序进行删除,越早过期先被删除。
  4. LRU:volatile,在设置了超时时间的数据集中,优先删除最近最少使用的,allKeys对所有的数据中优先删除最近最少使用的。(缺陷:5分钟,如果前4分钟的热点数据请求了一万次,而最后另外一个热点数据请求只有一千次,理应保留前4分钟请求一万次的热点数据,但最终会保留最后1分钟的数据)
  5. LFU:在LRU基础上增加了请求数统计,这样能更准确的代表我们的热点数据

此时回看我们的问题,我们需要的策略就是LFU算法,而使用volatile还是allkeys就需要根据相应的场景进行分析了。

你可能感兴趣的:(知识总结,redis,缓存,数据库)