【Redis】过期机制

本文主要探讨了Redis的过期机制,包括过期时间设置、被动删除策略(读/写时删除)、主动删除策略(定期检测并删除)以及内存不足时的删除策略。主动删除策略中,Redis会随机检测并删除过期key,当大量key过期时可能会影响线程性能。当内存超过maxmemory,Redis会阻塞进行内存清理,可能导致请求延迟。
摘要由CSDN通过智能技术生成

一、过期时间设置

TTL key : 获取key的过期剩余时间,不存在返回-2  无过期时间返回-1
PTTL key : 同TTL,毫秒
EXPIRE key ttl : 将键的生存时间设为 ttl 秒
PEXPIRE key ttl  :将键的生存时间设为 ttl 毫秒
EXPIREAT key timestamp :将键的过期时间设为 timestamp 所指定的秒数时间戳
PEXPIREAT key timestamp: 将键的过期时间设为 timestamp 所指定的毫秒数时间戳
PERSIST key : 去除ttl属性,不会过期

二、Redis过期策略

1、被动删除

  • 当读/写一个已经过期的key时,会触发被动删除策略,直接删除掉这个过期key
  • 1、这种删除策略对CPU友好,只会对检测时过期的key进行删除
  • 2、这种删除策略对内存不友好,一个key已经过期,但是在它被检测之前不会被删除,仍然占据内存空间,造成浪费。

2、主动删除

  • 由于被动删除策略无法保证过期数据被及时删除,所以Redis会定期主动淘汰一批已过期的key

  • Redis会周期性的随机测试一批设置了过期时间的key,比如每隔100毫秒执行以下步骤:

  • 1.随机检测100个设置了过期时间的key

  • 2.删除已过期的key

  • 3.若删除的key超过25个则重复步骤1

如果有大量的key同时到期,Redis会持续重复上述操作,直到百分

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值