Redis过期操作

过期操作

expire key seconds:设置 key 在 n 秒后过期;

示例:expire key 100

pexpire key milliseconds:设置 key 在 n 毫秒后过期;

示例:pexpire key2 100000

expireat key timestamp:设置 key 在某个时间戳(精确到秒)之后过期;

示例:expireat key3 1573472683

pexpireat key millisecondsTimestamp:设置 key 在某个时间戳(精确到毫秒)之后过期;

示例:pexpireat key4 1573472683000

小贴士:在 Redis 可以使用 time 命令查询当前时间的时间戳(精确到秒)

set key value ex seconds:设置键值对的同时指定过期时间(精确到秒);

示例:set k v ex 100

set key value px milliseconds:设置键值对的同时指定过期时间(精确到毫秒);

示例:set k2 v2 px 100000

setex key seconds valule:设置键值对的同时指定过期时间(精确到秒)。

示例:setex k3 100 v3

persist key 可以移除键值的过期时间

持久化过期的键:

  1. RDB

Rdb分为生成阶段和加载阶段。

生成阶段不会将过期的键写入到文件中。

加载阶段也不会加载过期的键。

  1. AOF

AOF持久化的时候,如果redis中有过期的键没有被删除,那么aof文件会保存该键,等到这个过期的键被删除的时候,再在aof文件追加一条del命令。

AOF重写会对aof文件进行检查,不会保存过期之后的键。

主从同步过期的键:

从库不会检查过期的键,只有等待主库过期删除同意一条删除的命令,才会删除过期的键。

  1. 过期策略

Redis 之所以能知道那些键值过期,是因为在 Redis 中维护了一个字典,存储了所有设置了过期时间的键值,我们称之为过期字典。

  1. 定时删除

在设置键值过期时间时,创建一个定时事件,当过期时间到达时,由事件处理器自动执行键的删除操作。优点是可以保证内存被尽快的释放,缺点是当出现大批量同时过期的键时,会影响redis的使用。

  1. 惰性删除

不主动删除过期键,每次从数据库获取键值时判断是否过期,如果过期则删除键值,并返回 null。优点是使用很少的资源去判断过期的键,缺点是会有一定的空间浪费

  1. 定期删除

Redis 默认每秒进行 10 次过期扫描,此配置可通过 Redis 的配置文件 redis.conf 进行配置,配置键为 hz 它的默认值是 hz 10。(Redis 每次扫描并不是遍历过期字典中的所有键,而是采用随机抽取判断并删除过期键的形式执行的。)

为了保证过期扫描不会出现循环过度,导致线程卡死现象,算法还增加了扫描时间的上限,默认不会超过 25ms。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值