美文网首页
Redis过期键删除策略及原理

Redis过期键删除策略及原理

作者: _Gaara_ | 来源:发表于2022-04-14 18:20 被阅读0次

基本简介

通过EXPIRE命令或者PEXPIRE命令,客户端可以以秒或者毫秒精度对库中的键设置生存时间(Time To Live,TTL)
SETNX可以在设置一个字符串键的同时设置过期时间。
TTL/ PTTL key 返回当前键的剩余时间

使用场景

这也就是常用的,分布式锁的基本实现方式。

过期键删除策略

首先是明确:过期时间,存储在redisDB结构的expires字典里。这个字典称之为过期字典。
字典的键是一个指针,指向键空间里的某个键对象。
字典的值是一个long的整数,保存过期时间的毫米级unix时间戳。

过期删除策略共有三种:

  • 定时删除
    定时删除,是在设置键的同时创建一个定时器,使其在时间到期时立刻删除键。这个策略对CPU时间极不友好,运算密集型服务中很有可能出现当前CPU时间片内执行的是与业务无关的内容。会对高并发业务的响应时间和吞吐量产生影响。除此之外,定时器的底层实现是一个无序链表,查询一个事件的时间复杂度是O(N)。
  • 惰性删除
    对于CPU来说是极为友好的,只在程序取出键之前做一个到期检查。到期了则删除并返回null。否则什么都不做。对于内存来说极不友好。这种情况可以视为内存泄漏,无用的垃圾内存不能删除。
  • 定期删除
    这是一种折中方案,惰性删除部分由db.c/expireIfNeeded 函数实现,如果输入键已经过期,则删除,否则不做操作。定时删除部分由redis.c/activeExpireCycle实现,当Redis的服务器周期性操作redis.c/serverCorn函数执行时,该函数就会被调用,规定时间内分多次遍历服务器中各个数据库,从expries字典中随机检查一部分过期键的过期时间,并删除其中的过期键。

相关文章

  • Redis中Key的过期策略和淘汰机制

    Key的过期策略 Redis的Key有3种过期删除策略,具体如下: 1. 定时删除 原理:在设置键的过期时间的同时...

  • Redis过期键删除策略及原理

    基本简介 通过EXPIRE命令或者PEXPIRE命令,客户端可以以秒或者毫秒精度对库中的键设置生存时间(Time ...

  • redis--数据库

    数据库对象定义如下: redisDb定义如下: 过期键删除 惰性删除redis过期键惰性删除策略定义在db.c/e...

  • Redis 过期策略

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

  • redis 过期键的删除策略

    redis 删除过期键策略  定时删除:   优点:定时删除策略对内存是最友好的:通过定时器,定时删除策略可以保证...

  • redis内部原理揭秘

    课程目标 过期时间设置及原理分析 发布订阅模式 Redis持久化及原理分析 Redis的内存回收策略 Redis单...

  • Redis单机数据库的实现

    数据库 redis默认会创建16个数据库;删除过期键有三种策略: 定时删除:对某个键设置过期时间,时间一到就删除键...

  • Redis过期删除策略和内存淘汰策略

    1. 过期删除策略 Redis可以用使用expire指令设置过期时间,在Redis内部,每当我们设置一个键的过期时...

  • Redis之内存淘汰与键过期删除策略

    键过期删除策略 Redis的键可以设置过期时间,时间一到,就会自动删除。但是我们会不会这么一种情景发生:会不会因为...

  • Redis对于过期键清除策略

    Redis对于过期键有三种清除策略: 1. 被动删除当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉...

网友评论

      本文标题:Redis过期键删除策略及原理

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