-
Redis的数据淘汰策略有哪些?
候选人:这个在redis中提供了很多种,默认是noeviction,不删除任何数据,内部不足时直接报错。这个可以在redis的配置文件中进行设置。我们在项目中设置的是allkeys-lru,它会挑选最近最少使用的数据进行淘汰,把一些经常访问的key留在redis中。
- noeviction:不淘汰任何key,但是内存满时不允许写入新数据,默认就是这种策略。
- volatile-ttl:对设置了TTL的key,比较key的剩余TTL值,TTL越小越先被淘汰
- allkeys-random:对全体key,随机进行淘汰。
- volatile-random:对设置了TTL的key,随机进行淘汰。
- allkeys-Iru:对全体key,基于LRU算法进行淘汰
- volatile-Iru:对设置了TTL的key,基于LRU算法进行淘汰
- allkeys-Ifu:对全体key,基于LFU算法进行淘汰
- volatile-Ifu:对设置了TTL的key,基于LFU算法进行淘汰
-
数据库有1000万数据,Redis只能缓存20w数据。如何保证Redis中的数据都是热点数据?
候选人:可以使用allkeys-lru(挑选最近最少使用的数据淘汰)淘汰策略。那留下来的都是经常访问的热点数据。
-
Redis的内存用完了会发生什么?
候选人:这个要看redis的数据淘汰策略是什么。如果是默认的配置,redis内存用完以后则直接报错。我们当时设置的是allkeys-lru策略,把最近最常访问的数据留在缓存中。