学习笔记 -- Redis过期键的删除策略

在这里插入图片描述

过期键的删除策略

1. 定时删除

概念:

  1. 在设置键的过期时间的同时,为每一个键设置一个***定时器***,让定时器在键的过期时间来临时立即执行键的删除操作。

优点:

  1. 内存友好型

缺点:

  1. 对CPU不友好, 删除过期键需要占用CPU的一些时间,在CPU资源严重紧张的情况下会对服务器的 吞吐量响应时间 造成严重影响。
  2. 创建定时器需要用到Redis服务器中的定时事件,而当前时间的实现是基于无序列表的,查找一个事件的时间复杂度为O(n),无法高效处理大量的事件。

2.惰性删除

概念

  1. 放任过期键不管,只有在每次键的取出时才检查当前键的过期性。

优点

  1. CPU友好型,CPU仅仅执行当前键的删除操作。

缺点

  1. 内存不友好型,无用的过期键占用了大量的空间,造成***内存泄漏***。

定期删除

概念

  1. 每过一段时间对数据库进行一次检查,删除其中的一些过期键, 但是检索那些数据库以及何时检索以及删除那些过期键则由固定的算法决定。
  2. 定期删除是定时删除和惰性删除的折中权衡。

2.现存的难点

  1. 确定删除操作的频率以及每次操作执行(花费)的时间

Redis过期键的删除策略

实现:
惰性删除+定期删除
1.惰性删除

  1. 惰性删除的实现由ExpiredIfNeeded函数实现,Redis在进行键的检查之后,如果过期则调用此函数。

2.定期删除

  1. 定期删除通过ActiveExpireCycle函数实现,当服务器周期性操作函数时,就会在规定的时间内遍历服务器中的各个数据库,从数据库中的expires中随机检查一部分键的过期时间,并删除其中的过期键。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值