1、定期删除
redis默认是间隔100ms随机抽取设置了过期时间的key,检查是否过期,如果过期了,就直接删除,如果redis设置了100w个key都设置了过期时间。间隔100ms检查100w个key,redis性能会下降很多。所以100ms是随机抽取一些key来检查和删除。
2、惰性删除
如果随机删除没有被删掉的,就进行惰性删除。在获取某个key的时候检查一下这个key是否过期,如果过期就删除,不会返回任何东西。
问题:如果key过期了,并且key没有被用过。导致大量的过期key堆积在内存中。如何处理? 答:执行内存淘汰,如果内存占用过多时候,就会进行内存淘汰。
3、内存淘汰策略
- a、最近最少使用:移除最近使用最少的key。最常用的策略
- b、随机淘汰:随机移除某个key。
- c、移除设置了过期时间的最近最少使用的key。
- d、随机移除设置了过期时间的key。
- e、移除设置了过期时间并且最快要过期的key。