redis系列(二)--过期数据和数据删除

1.redis过期数据

1.1 Redis中的数据特征

  • redis中是一种内存级数据库,所有数据均放在内存中,内存中的数据可以通过TTL指令获取其状态。

  • TTL返回的值有三种情况:正数,-1,-2

    • 正数:代表 数据在内存中还能存活的时间‘
    • -1:永久有效的数据
    • -2:已经过期的数据或被删除的数据 或 未定义的数据

    思考: 过期的数据真的被删除了吗?
    :没有,

    • redis会维护一个hash数据结构,数据地址作为key,过期时间作为value
    • 当删除策略触发时,再对过期的数据进行删除

在这里插入图片描述

3.数据删除策略

  1. 定时删除

  2. 惰性删除

  3. 定期删除

3.1 定时删除

  • 原理: 创建一个定时器,当key设置有过期时间,且过期时间到达时,由定时器任务立即执行对键的删除操作
  • 优点:节约内存
  • 缺点:CPU压力很大,无论CPU负载量多高,均会占用CPU,影响redis服务器响应时间和指令吞吐量
    在这里插入图片描述

3.2 惰性删除

  • 原理: 数据到达过期时间不做处理,等下次客户端访问该数据时:
    • 如果过期,删除,返回不存在
    • 如果没过期,返回该数据
  • 优点:节约CPU性能
  • 缺点:占用内存
    总结:用存储空间换取处理器性能(空间换时间)
    在这里插入图片描述

3.3 定期删除(重点)

  • 1.Redis启动服务器初始化时,读取配置server.hz的值,默认为10(redis.conf/ hz 10)。
    • 以Windows版Redis为例:

在这里插入图片描述
在这里插入图片描述
注释:

 Redis calls an internal function to perform many background tasks, like
# closing connections of clients in timeot, purging expired keys that are
# never requested, and so forth.
#
# Not all tasks are perforemd with the same frequency, but Redis checks for
# tasks to perform according to the specified "hz" value.
#
# By default "hz" is set to 10. Raising the value will use more CPU when
# Redis is idle, but at the same time will make Redis more responsive when
# there are many keys expiring at the same time, and timeouts may be
# handled with more precision.
#
# The range is between 1 and 500, however a value over 100 is usually not
# a good idea. Most users should use the default of 10 and raise this up to
# 100 only in environments where very low latency is required.

中文大意:

Redis调用一个内部函数来执行许多后台任务,比如
#在超时时间关闭客户端连接,清除过期的密钥
# never requested,以此类推。
#
#不是所有的任务都以相同的频率执行,但Redis检查
#根据指定的“hz”值执行任务。
#
#默认“hz”设置为10。提高该值将使用更多的CPU
# Redis是空闲的,但同时会使Redis更响应时
#有许多键同时到期,超时可能是
#处理更加精确。
#
#范围在1500之间,但是值超过100通常不是
好主意。大多数用户应该使用默认值10,并将其提高到10
# 100只在需要非常低延迟的环境中。
  • 2.每秒执行 hz=10次,每次执行时间为 250ms/hz(10)=25ms

  • 3.对某个数据库(Redis一共分为16个数据库)检测时,随机挑选w个key检测,

    • 如果key超时,删除key
    • 如果一轮中删除的key的数量>w*25%,循环该过程
    • 如果一轮中删除的key的数量<=w*25%,检查下一个库,0-15循环

    总结:
    在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值