【夯实Redis】Redis过期策略与内存淘汰机制有哪些?

目录

一、过期策略

二、淘汰机制


一、过期策略

        Redis采用 惰性删除策略 + 定期删除策略。

定时删除策略

        在为一个key设置过期时间的同时,也为这个key设置一个倒计时的定时器,时间到了以后定时器把Key删除。

        优点:有了定时器自动删除过期的Key,那么可以保证内存快速释放。

        缺点:有可能创建了太多的定时器,可能会影响Redis性能。CPU全被用于计时与删除Key了。

惰性删除策略

        查询某个Key的时候,先看它是否过期,如果过期了,就直接删除这个Key。

        优点:CPU占用少,只在用户取这个Key的时候才去删除Key。

        缺点:过期的Key删除不及时,可能会占用了大量内存。

       

定期删除策略

        每过100毫秒就随机选择一些设置了过期时间的Key,检查它们是否过期,如果过期的话就删除它们。

        优点:可以及时释放无用Key所占内存

        缺点:因为是随机的,有可能有些过期的Key一直没有被删除

二、淘汰机制

        Redis是基于内存的,且单线程。如果内存达到了最大内存限制,那么就会清除掉无用的Key。

        Redis支持的淘汰策略有6种:

对所有Key来说

         allkeys-lru :最少使用的Key被删除

         allkeys-random:随即删除

对设置了过期的Key来说:

         volatile-lru:最少使用的Key被删除

         volatile-ttl:快要过期的Key被删除

         volatile-random:随机删除

还有一种

        no-enviction:Redis默认淘汰机制。不删除任何Key,新写入指令报错。

 

阅读更多 

        跟着大宇学Redis--------目录帖

posted @ 2022-07-17 12:13  小大宇  阅读(29)  评论(0编辑  收藏  举报