【面试】Redis使用场景—缓存—数据淘汰策略

2023-12-14 11:04:55

Redis使用场景—缓存—数据淘汰策略

Redis有8种不同的数据淘汰策略;

  1. noeviction:不淘汰任何key,不允许写入新key,默认;
  2. volatile-ttl:对设置ttl的key,ttl值越小越先被淘汰;
  3. allkeys-random:所有key随机淘汰;
  4. volatile-random:设置ttl的key随机淘汰;
  5. allkeys-lru:所有key,最近最少使用的被淘汰;
  6. volatile-lru:设置ttl的key,最近最少使用的被淘汰;
  7. allkeys-lfu:所有key,最少频率使用的被淘汰;
  8. volatile-lfu:设置ttl的key,最少频率使用的被淘汰;

**面试官:** Redis的数据淘汰策略有哪些?
**候选人:**
- 嗯,这个在redis中提供了很多种,默认是noeviction,不删除任何数据,内部不足直接报错;
- 是可以在redis的配置文件中进行设置的,里面有两个非常重要的概念,一个是LRU,另外一个是LFU;
- LRU的意思就是最少最近使用,用当前时间减去最后一次访问时间,这个值越大则淘汰优先级越高;
- LFU的意思是最少频率使用,会统计每个key的访问频率,值越小淘汰优先级越高;
- 我们在项目设置的是allkeys-lru,挑选最近最少使用的数据淘汰,把一些经常访问的key留在redis中

**面试官:** 数据库有1000万数据,Redis只能缓存20w数据,如何保证Redis中的数据都是热点数据?
**候选人:**
- 可以使用 allkeys-lru (挑选最近最少使用的数据淘汰)淘汰策略,那留下来的都是经常访问的热点数据

**面试官:** Redis的内存用完了会发生什么?
**候选人:**
 - 不同的淘汰策略,效果会不一样....

文章来源:https://blog.csdn.net/qq_42411696/article/details/134986737
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。