Redis的key过期策略是怎么实现的

这篇具有很好参考价值的文章主要介绍了Redis的key过期策略是怎么实现的。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这是一道经典的Redis面试题,一个Redis中可能存在很多很多的key,这些key中可能有很大一部分都有过期时间,此时Redis服务器咋知道哪些key已经过期,哪些还没过期呢?

如果直接遍历所有的key,这显然是行不通的,效率非常低!!

Redis整体的策略是定期删除和惰性删除相结合。

举个栗子:假如我去小卖铺买东西,付款的时候,发现东西过期了。就告知老板,于是老板下架此产品。消费者发现过期了,才去下架,这就叫惰性删除。小卖铺老板主动定期抽取一部分商品,进行筛查,这就叫定期删除

一、惰性删除

假设这个key已经到了过期时间,但是暂时还没删它,key还存在。紧接着,后面的一次访问,正好用到了这个key,于是这次访问就会让Redis服务器触发删除key的操作,同时再返回一个nil。

二、定期删除

每次抽取一部分验证过期时间,保证这个抽取检查的过程,足够快。

为啥这里对于定期删除的时间,有明确的要求呢?因为Redis是单线程的程序,主要的任务就是处理每个命令的任务,如果扫描过期的时间过长,就可能导致正常处理请求命令就被阻塞了。

注意:虽然有了上述两种策略相结合,整体效果一般。仍然可能会有很多过期的key被残留了,没有被及时删除。Redis为了对上述进行补充,还提供了一系列的内存淘汰策略~文章来源地址https://www.toymoban.com/news/detail-804988.html

到了这里,关于Redis的key过期策略是怎么实现的的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 架构师成长之路Redis第三篇|Redis key过期清除策略

    maxmemory 100mb 当我们设置的内存达到指定的内存量时, 清除策略的 配置方式决定了默认行为。Redis可以为可能导致使用更多内存的命令返回错误,也可以在每次添加新数据时清除一些旧数据以返回到指定的限制。 当达到最大内存限制时,Redis所遵循的确切行为是使用MaxMemory-

    2024年02月10日
    浏览(36)
  • Redis(概述、应用场景、线程模式、数据持久化、数据一致、事务、集群、哨兵、key过期策略、缓存穿透、击穿、雪崩)

    目录 Redis概述 应用场景 Redis的线程模式 数据持久化 1.Rdb(Redis DataBase) 2.Aof(Append Only File) mysql与redis保持数据一致 redis事务 主从复制(Redis集群) 哨兵模式 key过期策略 缓存穿透、击穿、雪崩 1.缓存穿透:缓存中没有,在mysql中也没有 2.缓存击穿:数据在数据库中存在,某个

    2024年01月16日
    浏览(61)
  • Redis-监听过期key-JAVA实现方案

    一、创建监听配置类  RedisListenerConfig。 二、 创建监听器: RedisKeyExpirationListener 继承  KeyExpirationEventMessageListener . 这里只能获取到 过期的key,无法获取过期的value.  三: 设置redis的配置文件redis.config中的  notify-keyspace-events 为 Ex  四、验证一下:           在redis客户端执行

    2024年02月11日
    浏览(34)
  • Redis 原理缓存过期、一致性hash、雪崩、穿透、并发、布隆、缓存更新策略、缓存数据库一致性

    redis的过期策略可以通过配置文件进行配置 redis会把设置了过期时间的key放在单独的字典中,定时遍历来删除到期的key。 1).每100ms从过期字典中 随机挑选20个,把其中过期的key删除; 2).如果过期的key占比超过1/4,重复步骤1 为了保证不会循环过度,导致卡顿,扫描时间上限

    2024年02月08日
    浏览(56)
  • 【Redis】Redis 通用命令、键的过期策略

    Redis 有许多种数据结构,但是这些数据结构的 key 的类型都是字符串类型的(所以说,Redis 不同的数据结构都是针对于 value 而言的)。正因如此,对应相同类型的 key 来说,就有一些通用的来操作 Redis 的命令。 SET 和 GET 可以说是 Redis 中最基础也是最核心的两个命令了,Redi

    2024年02月09日
    浏览(41)
  • springboot监听Redis 缓存过期(Key 失效)事件

    事件通过 Redis 的订阅与发布功能(pub/sub)来进行分发, 故需要开启 redis 的事件监听与发布 修改 redis.conf 文件(Windows上是redis.windows.conf和redis.windows-service.conf) 通过开启key过期的事件通知,当key过期时,会发布过期事件;我们定义key过期事件的监听器,当key过期时,就能收到

    2024年02月12日
    浏览(38)
  • Redis的过期策略

    Redis 支持的过期策略主要有以下几种: 定时过期(Timed Expiration) 这种策略会在设置键的过期时间时,创建一个定时器,当达到指定的过期时间点时,立即执行删除操作。 这种方式可以精确控制键的生命周期,但是如果有大量的键都设置了过期时间,会创建大量的定时器,对系

    2024年01月19日
    浏览(28)
  • Redis过期策略

    Redis 使用的过期删除策略是什么? Redis 是可以对 key 设置过期时间的,因此需要有相应的机制将已过期的键值对删除,而做这个工作的就是过期键值删除策略。 每当我们对一个 key 设置了过期时间时,Redis 会把该 key 带上过期时间存储到一个 过期字典 (expires dict)中,也就是

    2024年02月09日
    浏览(75)
  • Redis - 数据过期策略

    Redis提供了两种数据过期策略 惰性删除 和 定期删除 当某个key过期时,不马上删除,而是在调用时,再判断它是否过期,如果过期再删除它 优点 : 对CPU友好,对于很多用不到的key,不用浪费时间进行过期检查 缺点 : 对内存不友好,如果某个key过期了,但一直没使用,那么

    2024年02月14日
    浏览(36)
  • Redis通信协议、过期回收策略

    Redis是一个CS架构的软件,通信一般分两步(不包括pipeline和PubSub): 客户端(client)向服务端(server)发送一条命令 服务端解析并执行命令,返回响应结果给客户端 因此客户端发送命令的格式、服务端响应结果的格式必须有一个规范,这个规范就是通信协议。 而在Redis中采

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包