美文网首页redis缓存实战探究专题
redis面试之键过期内部是如何进行删除的?

redis面试之键过期内部是如何进行删除的?

作者: 先生zeng | 来源:发表于2019-10-27 13:42 被阅读0次

在Redis中提供了Expire命令设置一个键的过期时间,到期以后Redis会自动删除它。这个在我们实际使用过程中用得非常多。

EXPIRE命令的使用方法为

EXPIRE key seconds

其中seconds 参数表示键的过期时间,单位为秒。
EXPIRE 返回值为1表示设置成功,0表示设置失败或者键不存在
如果向知道一个键还有多久时间被删除,可以使用TTL命令

TTL key

当键不存在时,TTL命令会返回-2
而对于没有给指定键设置过期时间的,通过TTL命令会返回-1如果向取消键的过期时间设置(使该键恢复成为永久的),可以使用PERSIST命令,如果该命令执行成功或者成功清除了过期时间,则返回1 。 否则返回0(键不存在或者本身就是永久的)

EXPIRE命令的seconds命令必须是整数,所以最小单位是1秒,如果向要更精确的控制键的过期时间可以使用
PEXPIRE命令,当然实际过程中用秒的单位就够了。 PEXPIRE命令的单位是毫秒。即PEXPIRE key 1000与EXPIRE
key 1相等;对应的PTTL以毫秒单位获取键的剩余有效时间还有一个针对字符串独有的过期时间设置方式
setex(String key,int seconds,String value)

过期删除的原理

Redis 中的主键失效是如何实现的,即失效的主键是如何删除的?实际上,Redis 删除失效主键的方法主要有两
种:

消极方法(passive way)

在主键被访问时如果发现它已经失效,那么就删除它

积极方法(active way)

周期性地从设置了失效时间的主键中选择一部分失效的主键删除对于那些从未被查询的key,即便它们已经过期,被动方式也无法清除。因此Redis会周期性地随机测试一些key,已过期的key将会被删掉。Redis每秒会进行10次操作,具体的流程:

\1. 随机测试 20 个带有timeout信息的key;
\2. 删除其中已经过期的key;
\3. 如果超过25%的key被删除,则重复执行步骤1;
这是一个简单的概率算法(trivial probabilistic algorithm),基于假设我们随机抽取的key代表了全部的key空
间。

相关文章

  • redis面试之键过期内部是如何进行删除的?

    在Redis中提供了Expire命令设置一个键的过期时间,到期以后Redis会自动删除它。这个在我们实际使用过程中...

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

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

  • redis如何设置键过期和键过期对内存的影响

    如何设置键过期 Redis所有的键都可以设置过期属性,内部保存在过期字典中。 expire key seconds...

  • redis--数据库

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

  • Redis 特性

    一、键的过期 Redis 可以为每个键设置过期时间,当键过期时,会自动删除该键。 二、事务与流水线 使用 MULT...

  • Redis 过期策略

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

  • Redis单机数据库的实现

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

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

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

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

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

  • redis的过期策略

    1.前言 Redis的所有数据结构都是可以设置过期时间的,时间一到就可以自动删除。那么,redis内部是如何知道哪...

网友评论

    本文标题:redis面试之键过期内部是如何进行删除的?

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