回答思路:
为什么存在过期一说
过期策略可以分为三类
回答总结:
我们都知道Redis速度快,是Redis将数据放在内存中的,通过异步的方式同步磁盘,所以大大减少了磁盘I/O的时间。也就是因为放在内存中,内存大小有限,所以会存在内存满了,需要将Redis的数据删除,也就是缓存淘汰或者说过期的说法。
缓存淘汰策略分为三大类:
1)不删除:enviction是Redis默认策略,是指内存达到了限制也不淘汰数据,但也无法写入数据,会命令报错;
2)被动删除:是指有设置过期时间的key,在对该数据进行读写的时候发现过期了,将其进行删除。但是有个缺点:冷数据无法删除;
3)主动删除:主动删除是指内存超过maxMemory时触发主动删除策略,主动删除策略又分为以下几种:
- 设置过期时间的valitile开头
- valitile-lru:设置了过期时间且最近最少使用的key
- valitile-ttl:设置了过期时间且即将过期的key
- valitile-random:设置了过期时间且随机删除key
- 所有key以allKeys开头
- allKeys-lru:全部的key中最近最少使用的key
- allKeys-random:全部的key中随即删除的key
最后记录一篇我还没来的及仔细看但是大致浏览一下写的很全的Redis面试题总结: