Redis 数据过期策略

1.Redis中key的的过期时间

  通过 expire key seconds 命令来设置数据的过期时间。返回1表明设置成功,返回0表明设置失败。在key上设置了过期时间后key将在指定的秒数后被自动删除。

  expire : 过期;期满

  

注: flushall 清空数据库 ; name不存在,设置过期时间失败

  

过期时间的其他相关命令:   

  通过 ttl key  命令来查看数据的过期时间

  

   通过 persist key  命令来可以清除数据的过期时间

  persist :存留;保持

  

 注: 返回 -1 表示永不过期;返回 -2 表示已过期

2.Redis过期键删除策略

  Redis使用懒惰删除+定期删除相结合的方式处理过期的key。

  Redis key过期的方式有三种:

  • 惰性删除:当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key
  • 定期删除:由于惰性删除策略无法保证冷数据被及时删掉,所以Redis会定期主动淘汰一批已过期的key (定期删除策略)
  • 当前已用内存超过maxmemory限定时,触发主动清理策略 (内存淘汰机制)

1) 定期删除策略

  Redis 启用一个定时器定时监视所有的 key,判断key是否过期,过期的话就删除。这种策略可以保证过期的 key 最终都会被删除,但是也存在严重的缺点:每次都遍历内存中所有的数据,非常消耗 CPU 资源,并且当 key 已过期,但是定时器还处于未唤起状态,这段时间内 key 仍然可以用。

2) 惰性删除策略

  在获取 key 时,先判断 key 是否过期,如果过期则删除。这种方式存在一个缺点:如果这个 key 一直未被使用,那么它一直在内存中,其实它已经过期了,会浪费大量的空间。

3) 主动清理策略 (淘汰策略)

  淘汰策略分为:

  1. 当内存不足以容纳新写入数据时,新写入操作会报错。(Redis 默认策略)

  2. 当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 Key。(LRU推荐使用)

  3. 当内存不足以容纳新写入数据时,在键空间中,随机移除某个 Key。

  4. 当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的 Key。这种情况一般是把 Redis 既当缓存,又做持久化存储的时候才用。

  5. 当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个 Key。

  6. 当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的 Key 优先移除。

  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值