首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

谈谈Redis过期数据删除策略

目录前言定时删除 惰性删除定期删除 总结前言我们都知道Redis 所有的数据结构都可以设置过期时间,时间一到,这些数据就会变成过期数据,这个时候就需要进行删除,这里需要注意一下,这个与淘汰策略不同,淘汰策略是指当内存被占满了之后...Redis提供了四个命令来设置过期时间:EXPIRE :表示将键 key 的生存时间设置为 ttl 秒。...指令结果状态XX具有时效性的数据-1永久有效的数据-2已经过期的数据 或 被删除的数据 或 未定义的数据 在redis中有3种过期数据删除策略:惰性删除和定期删除及定时删除数据删除策略目标:在内存占用与...缺点:内存泄漏,就是一个键已经过期,如果我们一直不去访问它,然后的话让这个键仍然保留在redis中,也就是意味着这个过期键不被删除,它所占用的内存就不会释放。...定时任务的发起的频率由redis.conf配置文件中的hz来进行配置,Redis 默认每 1 秒运行 10 次,也就是每 100 ms 执行一次,每次随机抽取一些设置了过期时间的 key(这边注意不是检查所有设置过期时间的

1.2K181
您找到你想要的搜索结果了吗?
是的
没有找到

字节一面:Redis主节点的Key已过期,但从节点依然读到过期数据....

一、拉取过期数据 Redis性能高主要得益于纯内存操作,但内存存储介质的成本过高,所以数据的存储有一定的约束。 通常会设置过期时间,对于一些使用不是很频繁的数据,会定期删除,提高资源的利用率。...删除过期数据Redis提供了两种策略: 1、惰性删除。 也称被动删除,当数据过期后,并不会马上删除。而是等到有请求访问时,对数据检查,如果数据过期,则删除数据。...每隔一段时间,默认100ms,Redis会随机挑选一定数量的Key,检查是否过期,并将过期的数据删除。 你可能会为问了,既然Redis过期数据删除策略,那为什么还会拉取到已经过期的数据呢?...1、如果此时读主库,数据已经过期,主库的惰性删除会发挥作用,主动触发删除操作,客户端不会拿到已过期数据 2、但是如果读从库,则有可能拿到过期数据。...原因有两个 原因一: 跟 Redis 的版本有关系,Redis 3.2 之前版本,读从库并不会判断数据是否过期,所以有可能返回过期数据

1.4K20

Redis中的Key是否在过期时间到达后立即被删除?详解Redis的过期策略

那么,当Redis中的Key到达过期时间后,它会立即被删除吗?本文将深入探讨Redis的过期策略,带你了解背后的机制。Redis的过期策略是什么?Redis的过期策略是一种自动删除过期数据的机制。...但需要注意的是,Redis并不保证一定会在Key的过期时间到达后立即删除它。实际上,Redis采用了一种惰性删除的策略来管理过期数据。...定期删除(Active Expiration)除了惰性删除,Redis还会通过定期删除的方式来清理过期数据Redis会每隔一段时间(默认是100ms)随机抽取一部分过期数据,然后删除这些过期数据。...示例演示:过期数据的处理为了更好地理解Redis的过期策略,让我们通过一个简单的示例演示一下。...总结Redis的过期策略采用了惰性删除和定期删除的方式来管理过期数据。尽管过期Key并不会立即被删除,但通过这种策略,Redis能够在保证性能的同时,自动清理过期数据,释放内存空间。

2.8K20

Redis主从同步与故障切换,有哪些坑?

来自:网络 在服务上线后总有些不尽人意的时候,初次使用Redis集群部署Redis主从同步出现切换故障,也是常有发生,本篇文章主要分享Redis主从同步切换有哪些坑可以尽量避免!...02 读取过期数据 我们在使用 Redis 主从集群时,有时会读到过期数据。...一个数据过期后,应该是被删除的,客户端不能再读取到该数据,但是,Redis 为什么还能在从库中读到过期的数据呢?这是由 Redis过期数据删除策略引起的。...但是从库的行为与版本有关: 3.2之前的不检查过期, 会返回数据, 3.2之后虽然不删除过期数据, 但是返回空值....定期删除策略每次删除的过期数据不多 (避免影响性能), 所以应用可能读到未来得及删除的数据. 只要使用了 Redis 3.2 后的版本,就不会读到过期数据了吗?其实还是会的。

1.6K20

Redis 缓存淘汰机制

导语 Redis是一款高效的K-V数据库,本文主要是对redis中淘汰数据的机制进行一个简单的介绍。在redis中淘汰数据有俩种,一种是过期淘汰,另外一种是基于LRU淘汰算法的数据淘汰。...在讲解redis的缓存淘汰之前,先简单提一下redis的事件库—ae。 ae事件库 ae一个非常小巧而又精巧的事件库,它可以处理文件、定时俩种事件。细节和原理就不说了,发现km上有很多介绍的。...aeProcessEvents(eventLoop, AE_ALL_EVENTS); } } 过期淘汰入口 如上代码所示,每次循环都会调用beforesleep,该方法会执行下面几个操作 触发淘汰过期数据...处理一些和客户端相应的操作 处理aof 淘汰过期数据的触发除此之外还在定时事件中会被触发,定时事件的回调方法serverCron->databasesCron。...该方法会被定期调用,主要执行了以下几个操作 触发淘汰过期数据 rehash redis数据库 resizing数据库 俩个入口都会调用同样一个方法activeExpireCycle(int type),

2.8K10

【愚公系列】2023年04月 Java教学课程 126-Redis的数据删除与淘汰策略

文章目录 一、数据删除与淘汰策略 1.过期数据 1.1 Redis中的数据特征 1.2 时效性数据的存储结构 2.数据删除策略 2.1 数据删除策略的目标 2.2 定时删除 2.3 惰性删除 2.4...定期删除 2.5 删除策略对比 3.数据淘汰策略(逐出算法) 3.1 淘汰策略概述 3.2 策略配置 ---- 一、数据删除与淘汰策略 1.过期数据 1.1 Redis中的数据特征 Redis是一种内存级数据库...数据的时效在redis中如何存储呢?...看下图: 过期数据是一块独立的存储空间,Hash结构,field是内存地址,value是过期时间,保存了所有key的过期描述,在最终进行过期处理的时候,对该空间的数据进行检测, 当时间到期之后通过field...2.数据删除策略 2.1 数据删除策略的目标 在内存占用与CPU占用之间寻找一种平衡,顾此失彼都会造成整体redis性能的下降,甚至引发服务器宕机或 内存泄露 针对过期数据要进行删除的时候都有哪些删除策略呢

46130

Redis主从复制与优化

运行ID的主要作用是来唯一识别redis节点,比如从节点保存主节点的运行ID识别自已正在复制是哪个主节点。...主节点写数据,从节点读数据,可能遇到读问题 复制数据延迟 读到过期数据 从节点故障 主从配置不一致 例如maxmemory 不一致 会导致 丢失数据 例如数据结构优化参数(例如hash-max-ziplist-entries...-------一般不考虑这个问题 读到过期数据redis在删除key时有两种策略,一种是懒惰型策略,即只有当redis操作这个key时才会将key删除,第二种是定期采样key删除--------当key...数据非常多时,采样速度比不上key生成速度会造成很多过期数据没有删除,因为redis一般都是在master节点(增加删除数据),slave查询到过期数据也不能删除。...会导致slave读到过期数据(在redis3.2中已经解决)

24020

面试官:你们Redis故障过吗,怎么解决?

1 重启和故障转移后的部分重同步 Redis 4.0 开始,当一个实例在故障转移后被提升为 master,它仍能与旧 master 的 Replica 进行部分重同步。...Master 的连接时或仍在进行复制时,Replica 可以如下方式起作用: 若 replica-serve-stale-data 为 yes(默认值),则 Replica 仍会回复客户端请求,可能带有过期数据...4.1.1 Redis 删除策略 ?...因为读到了过期数据,而读到过期数据就是 Redis 删除策略所导致的: 惰性删除 Master 每次读取命令时都会检查K是否超时,若超时,则执行 del 命令删除K,之后异步把 del 命令同步给 Replica...4.2.4 Redis自身优化 ? Redis3.2 版本解决了 Redis 删除策略导致的过期数据,在此版本中 slave 读数据前,会检查K过期时间,以决定是否返回数据。

49920

Redis08】删除策略与逐出算法

删除策略 那些有效期到了的数据,Redis并不是真的一到期立刻就把它删了,因为删除数据相比于其他客户端命令并不那么重要,这些数据会暂留在内存中,最终根据Redis的删除策略删除 好的删除策略应该是尽量寻找内存占用和...CPU占用之间的平衡点,而不是单纯确保过期数据被删除,顾此失彼会造成Redis整体性能的下降,引起服务器宕机或内存泄露。...定时删除 创建一个定时器,当定时器的时间到expires中的过期时间时,这个key就会被立即删除 优点:过期数据会被尽快删除,节约内存 缺点:一旦到定时器的时间,CPU必须立刻执行删除,CPU压力大...W 的取值取决于配置文件中ACTIVE_EXPIRE_CYCLE_LOOKUPS_PER_LOOP的值 特点: CPU性能占用设有峰值,检测额度可自定义设置 内存压力不是很大,长时间占用内存的过期数据会被持续清理...逐出算法 当新数据进入Redis中时,内存不足怎么办?

67740

RedisRedis 删除策略

一、过期数据 Redis中的数据特征:  Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态 XX : 具有时效性的数据 -1 : 永久有效的数据 -2 :...redis服务器有很多操作需要执行时,CPU的压力会很大,于是redis中的策略是,在内存还够的前提下,先不急着释放已删除的数据的内存空间,先执行客户端的指令 二、数据删除策略 redis中的数据删除策略包括定时删除...、惰性删除、定期删除 redis中用一个hash结构数据存放地址和过期时间,而删除策略就是基于这块hash数据结构 我们需要在内存占用与CPU占用之间寻找一种平衡,顾此失彼都会造成整体redis性能的下降...库中的时效性数据,采用随机抽取的策略,利用过期数据占比的方式控制删除频度 特点1:CPU性能占用设置有峰值,检测频度可自定义设置 特点2:内存压力不是很大,长期占用内存的冷数据会被持续清理 总结:周期性抽查存储空间...里,会使用惰性删除和定期删除两种方式 三、逐出算法 当内存被永久数据占满(删除策略只能清除过期数据),新数据进入redis时,如果内存不足怎么办?

58730

Redis专题(十二) ——Redis特殊情况处理机制

Redis专题(十二) ——Redis特殊情况处理机制 (原创内容,转载请注明来源,谢谢) 一、内存淘汰 当redis的内存不足时,需要采取内存淘汰的方法,共有两种方法。...memcache只有LRU淘汰,相比于memcache,redis的淘汰机制丰富。redis的淘汰算法是通过配置文件中的maxmemory-policy进行设置。...当redis内存使用量超过设置的内存时,无论是采取虚拟内存还是内存淘汰,都会循环执行,直到redis的内存使用量降到设置的内存以下为止。...因此,如果要使用连接池,长期使用redis连接,则不能设置此配置,否则连接有可能会失效。 四、清除过期数据 当把value存储时,如果设定了过期时间,则redis会在过期后将数据从内存删除。...为了提高效率,redis用HashTable存储数据的过期时间,把key和过期时间关联。 redis内部有定时器,每隔100毫秒会清理一次过期数据

67580

过期不候--具备生命周期的数据的技术实现方案

3.2   过期时间精度 删除操作的一些注意事项: TTL索引 不能 保证过期数据会被立刻删除 在文档过期和MongoDB从数据库中删除文档之间,可能会有延迟。...删除过期数据的后台任务每隔60秒运行一次 在文档过期之后和后台任务运行或者结束之前,文档会依然存在于集合中(删除操作还没有完成)。...删除操作的持续实际取决于您的 mongod 实例的负载 在两次后台任务运行的间隔间,过期数据可能会继续留在数据库中超过60秒。 4   redis redis是一个内存数据库,它具备快速IO的特点。...如下是一些设置生存时间相关的基本操作: redis> SET cache_page "www.google.com" OK redis> EXPIRE cache_page 30 # 设置过期时间为...30 秒 (integer) 1 redis> TTL cache_page # 查看剩余生存时间 (integer) 23 redis> EXPIRE cache_page 30000

1.2K50

Redis开发与运维学习笔记---(11)

Redis开发与运维学习笔记---(11) Redis开发与运维中遇到的问题 之前的文章中,我们讲述了redis的复制机制,通过复制,数据可以被备份,然后这些备份的副本可以用来做读写分离、负载均衡、故障转移等...1 读写分离 对于读占比比较高的场景,我们可以把一部分流量分摊到从节点slave来减轻主节点master的压力,当使用读节点来响应读请求时,可能遇到下面的问题: 1、复制数据延迟 2、读到过期数据...再看过期数据: 当主节点存储大量超时的数据时,如缓存数据,redis内部需要维护过期数据删除策略,删除的策略有两种,惰性删除和定时删除。...以上所述为使用Redis做读写分离是存在的成本,Redis本身的性能非常高,开发人员在使用额外的从节点提升读性能之前,尽量在主节点上做充分的优化,提前解决慢查询、持久化阻塞等问题。...2、单机器复制风暴 由于redis是单线程架构,通常单台机器会部署对个redis实例,当一台机器上同时部署多台机器时,如果这台机器出现故障或者网络长时间中断,当它恢复后,会有大量从节点针对这台机器上的主节点进行全量复制

40410
领券