美文网首页
Redis定期删除和惰性删除

Redis定期删除和惰性删除

作者: 三喵w | 来源:发表于2019-10-12 18:35 被阅读0次

定期删除

redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定期遍历这个字典来删除到期的 key。

定期删除策略

Redis 默认会每秒进行十次过期扫描(100ms一次),过期扫描不会遍历过期字典中所有的 key,而是采用了一种简单的贪心策略。

从过期字典中随机 20 个 key;

删除这 20 个 key 中已经过期的 key;

如果过期的 key 比率超过 1/4,那就重复步骤 1;

惰性删除

除了定期遍历之外,它还会使用惰性策略来删除过期的 key,所谓惰性策略就是在客户端访问这个 key 的时候,redis 对 key 的过期时间进行检查,如果过期了就立即删除,不会给你返回任何东西。

定期删除是集中处理,惰性删除是零散处理。

为什么要采用定期删除+惰性删除2种策略呢?

如果过期就删除。假设redis里放了10万个key,都设置了过期时间,你每隔几百毫秒,就检查10万个key,那redis基本上就死了,cpu负载会很高的,消耗在你的检查过期key上了

但是问题是,定期删除可能会导致很多过期key到了时间并没有被删除掉,那咋整呢?所以就是惰性删除了。这就是说,在你获取某个key的时候,redis会检查一下 ,这个key如果设置了过期时间那么是否过期了?如果过期了此时就会删除,不会给你返回任何东西。

并不是key到时间就被删除掉,而是你查询这个key的时候,redis再懒惰的检查一下

通过上述两种手段结合起来,保证过期的key一定会被干掉。

所以说用了上述2种策略后,下面这种现象就不难解释了:数据明明都过期了,但是还占有着内存。

原文地址: https://mp.weixin.qq.com/s/FyYhLS3X7LDe0PLxooz_cQ

相关文章

  • redis和memcached的区别点

    过期策略redis采用惰性删除和定期删除,memcached只采用了惰性删除。惰性删除和定期删除的定义详见“key...

  • Redis 过期策略

    redis 过期策略 redis 过期策略是:定期删除+惰性删除。 所谓定期删除,指的是 redis 默认是每隔 ...

  • redis数据淘汰机制

    redis的过期策略 redis有两种过期策略,定期删除和惰性删除 定期删除:redis每个100ms随机抽取一些...

  • redis过期数据删除策略

    过期数据删除策略  redis的过期数据删除策略使用了惰性删除和定期删除两种策略: 惰性删除发生在redis处理读...

  • Redis学习笔记(一)过期策略

    redis支持两种过期删除策略:定期扫描删除和惰性删除 定期扫描策略 redis会将所有设置了过期时间的key放到...

  • Redis定期删除和惰性删除

    定期删除 redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定期遍历这个字典来删除到期的...

  • Redis几种常见问题

    1.Redis的过期策略以及内存淘汰机制 Redis采用的是定期删除+惰性删除策略+内存淘汰机制。 定期删除,Re...

  • redis过期策略以及内存淘汰机制

    一、redis的过期策略 定期删除+惰性删除redis在存储数据时,可能会设置过期时间,而所谓的定期删除,指的是r...

  • Redis过期策略和淘汰策略

    一、Redis采用的过期策略 惰性删除+定期删除 惰性删除流程 在进行get或setnx等操作时,先检查key是否...

  • redis 淘汰机制

    a.定期删除+惰性删除 1.定期删除 指的是 redis 默认是每隔 100ms 就随机抽取一些设置了过期时间的 ...

网友评论

      本文标题:Redis定期删除和惰性删除

      本文链接:https://www.haomeiwen.com/subject/huzxpctx.html