扫码订阅《 》或入驻星球,即可阅读文章!

GOLANG ROADMAP

阅读模式

  • 沉浸
  • 自动
  • 日常
首页
Go友会
  • 城市
  • 校园
Go学院
  • Go小课
  • Go小考
  • Go实战
  • 精品课
Go求职
  • 求职辅导🔥
  • Offer收割社群
  • 企业题库
  • 面试宝典
Go宝典
  • 在线宝典
  • B站精选
  • 推荐图书
  • 每日博文
Go仓库
实验区
  • Go周边
  • Go下载
  • Go月刊
消息
更多
  • 用户中心

    • 我的信息
    • 推广返利
  • 玩转星球

    • 星球介绍
    • 角色体系
    • 星主权益
  • 支持与服务

    • 联系星主
    • 成长记录
    • 常见问题
    • 吐槽专区
  • 合作交流

    • 渠道合作
    • 课程入驻
    • 友情链接
author-avatar

GOLANG ROADMAP


首页
Go友会
  • 城市
  • 校园
Go学院
  • Go小课
  • Go小考
  • Go实战
  • 精品课
Go求职
  • 求职辅导🔥
  • Offer收割社群
  • 企业题库
  • 面试宝典
Go宝典
  • 在线宝典
  • B站精选
  • 推荐图书
  • 每日博文
Go仓库
实验区
  • Go周边
  • Go下载
  • Go月刊
消息
更多
  • 用户中心

    • 我的信息
    • 推广返利
  • 玩转星球

    • 星球介绍
    • 角色体系
    • 星主权益
  • 支持与服务

    • 联系星主
    • 成长记录
    • 常见问题
    • 吐槽专区
  • 合作交流

    • 渠道合作
    • 课程入驻
    • 友情链接
  • 面试宝典系列

    • Redis面试题汇总
  • 宝典内容

    • 1.Redis的数据结构及使用场景?
    • 2.Redis持久化的几种方式?
    • 3.Redis的LRU具体实现?
    • 4.单线程的Redis为什么快?
    • 5.Redis的数据过期策略
    • 6.如何解决Redis缓存雪崩问题?
    • 7.如何解决Redis缓存穿透问题?
    • 8.Redis并发竞争key如何解决?
    • 9.Redis的主从模式和哨兵模式和集群模式区别?
    • 10.Redis事物的了解CheckAndSet操作实现乐观锁
    • 11.Redis有序集合zset底层怎么实现的?
    • 12.跳表的查询过程是怎么样的,查询和插入的时间复杂度

扫码订阅《 》或入驻星球,即可阅读文章!

5.Redis的数据过期策略


GOLANG ROADMAP
Redis的数据过期策略

Redis 中数据过期策略采用定期删除和惰性删除策略:

  • 定期删除策略

Redis 启用一个定时器定时监视所有的 key,判断key是否过期,过期的话就删除。

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

  • 惰性删除策略

在获取 key 时,先判断 key 是否过期,如果过期则删除。

这种方式存在一个缺点:如果这个 key一直未被使用,那么它一直在内存中,其实它已经过期了,会浪费大量的空间。

这两种策略天然的互补,结合起来之后,定时删除策略就发生了一些改变,不在是每次扫描全部的 key 了,而是随机抽取一部分 key 进行检查,这样就降低了对 CPU 资源的损耗,惰性删除策略互补了为检查到的key,基本上满足了所有要求。

但是有时候就是那么的巧,既没有被定时器抽取到,又没有被使用,这些数据又如何从内存中消失?

这个时候就需要用到了,内存淘汰机制.

内存淘汰机制分为:

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

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

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

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

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

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