iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Redis过期数据是否会被立马删除
  • 863
分享到

Redis过期数据是否会被立马删除

Redis过期数据删除Redis过期数据 2022-07-22 12:07:31 863人浏览 安东尼
摘要

目录引言过期与持久化惰性删除定期删除引言 当 key 达到过期时间,Redis 就会马上删除么? 先说结论:并不会立马删除。 Redis 有两种删除过期数据的策略: 定期选取部分数据删除;惰性删除; 该命令在 Redis

引言

当 key 达到过期时间,Redis 就会马上删除么?

先说结论:并不会立马删除。

Redis 有两种删除过期数据的策略:

  • 定期选取部分数据删除;
  • 惰性删除;

该命令在 Redis 2.4 版本,过期时间并不是很精确,它可能在零到一秒之间。

从 Redis 2.6 开始,过期错误为 0 到 1 毫秒。

EXPIRE key seconds [ NX | XX | GT | LT]

 指令可以将指定的 key 设置过期时间,如果没有设置过期时间, key 将一直存在,除非我们明确将其删除,比如执行 DEL 指令。

所谓”狡兔死,走狗烹“,没用了就干掉,跟 35 岁就“毕业”是一个道理。

好慌……

从 Redis 版本 7.0.0 开始:EXPIRE 添加了选项:NXXXGTLT 选项。

  • NX:当 key 没有过期时才设置过期时间;
  • XX:只有 key 已过期的时候才设置过期时间;
  • GT:仅当新的到期时间大于当前到期时间时才设置过期时间;
  • LT:仅在新到期时间小于当前到期时间才设置到过期时间。

过期与持久化

主从或者集群架构中,两台机器的时钟严重不同步,会有什么问题么?

key 过期信息是用 Unix 绝对时间戳表示的。

为了让过期操作正常运行,机器之间的时间必须保证稳定同步,否则就会出现过期时间不准的情况。

比如两台时钟严重不同步的机器发生 RDB 传输, slave 的时间设置为未来的 2000 秒,假如在 master 的一个 key 设置 1000 秒存活,当 Slave 加载 RDB 的时候 key 就会认为该 key 过期(因为 slave 机器时间设置为未来的 2000 s),并不会等待 1000 s 才过期。

Redis过期数据是否会被立马删除

机器时钟不同步导致过期混乱

惰性删除

惰性删除很简单,就是当有客户端的请求查询该 key 的时候,检查下 key 是否过期,如果过期,则删除该 key

比如当 Redis 收到客户端的GET movie:小泽#玛……利亚.rmvb 请求,就会先检查 key = movie:小泽#玛……利亚.rmvb 是否已经过期,如果过期那就删除。

删除过期数据的主动权交给了每次访问请求。

该实现通过 expireIfNeeded函数实现,源码路径:src/db.c

intexpireIfNeeded(redisDb*db,robj*key,intforce_delete_expired){
//key没有过期,return0
if(!keyIsExpired(db,key))return0;
if(server.masterhost!=NULL){
if(server.current_client==server.master)return0;
if(!force_delete_expired)return1;
}
if(checkClientPauseTimeoutAndReturnIfPaused())return1;

deleteExpiredKeyAndPropagate(db,key);
return1;
}

定期删除

仅仅靠客户端访问来判断 key 是否过期才执行删除肯定不够,因为有的 key 过期了,但未来再也没人访问,这些数据要怎么删除呢?

不能让这些数据「占着茅坑不拉屎」。

所谓定期删除,也就是 Redis 默认每 1 秒运行 10 次(每 100 ms 执行一次),每次随机抽取一些设置了过期时间的 key,检查是否过期,如果发现过期了就直接删除。

注意:并不是一次运行就检查所有的库,所有的键,而是随机检查一定数量的键。

具体步骤如下:

Redis过期数据是否会被立马删除

定时删除

  • 从所有设置了过期时间的 key 集合中随机选择 20 个 key;
  • 删除「步骤 1」发现的所有过期 key 数据;
  • 「步骤 2 」结束,过期的 key 超过 25%,则继续执行「步骤 1」。

删除的源码 expire.c 的 activeExpireCycle 函数实现。

这也就意味着在任何时候,过期 key 的最大数量等于每秒最大写入操作量除以 4。

为啥不检查所有设置过期时间的 key?

你想呀,假设 Redis 里存放了 100 w 个 key,都设置了过期时间,每隔 100 毫秒就检查 100 w 个 key,CPU 全浪费在检查过期 key 上了,Redis 也就废了。

注意了:不管是定时删除,还是惰性删除。当数据删除后,master 会生成删除的指令记录到 AOF 和 slave 节点。

码哥,如果过期的数据太多,定时删除无法删除完全(每次删除完过期的 key 还是超过 25%),同时这些 key 也再也不会被客户端请求,也就是无法走惰性删除,会怎样?

会不会导致 Redis 内存耗尽,怎么破?

这个问题问得好,答案是走内存淘汰机制。

以上就是Redis过期数据是否会被立马删除的详细内容,更多关于Redis过期数据的资料请关注我们其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: Redis过期数据是否会被立马删除

本文链接: https://www.lsjlt.com/news/33428.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • redis过期后不删除会怎么样
    如果Redis中的数据设置了过期时间但过期后没有被删除,会出现以下情况:1. 读取过期的数据:当尝试读取过期的数据时,Redis会返...
    99+
    2023-09-11
    redis
  • 云服务器到期了数据会不会被删除
    云服务器通常是按照合同期限或者合同规定的数据保留时间进行保留的。如果您的云服务器到期了,您的数据并不会被删除。这是因为云计算技术可以让您的服务器在其整个生命周期中提供持续的服务。 如果您在云服务器到期前未向云计算提供商续费,则您的数据依然...
    99+
    2023-10-26
    会不会 服务器 数据
  • 云服务器到期了数据会不会被删除了
    云服务器通常是按照合同周期向用户提供服务的,数据也是按照合同规定的方式存储在云服务器上的。当云服务器到期时,通常是指服务提供商(ISV)或其客户停止向云服务器提供服务或者云服务器的可用性降低,从而导致数据被删除或者不再可用。 如果您的服务...
    99+
    2023-10-26
    会不会 服务器 数据
  • 云服务器到期了数据会不会被删除掉
    云服务器到期后,您可能无法从服务器上直接删除数据。云服务器通常会提供数据保护功能,以确保在服务器到期后,数据可以安全地存储、恢复和可持续访问。 如果您在云服务器到期前已将数据转移到其他位置,则可以通过在服务管理界面中选择“云备份”来备份数...
    99+
    2023-10-26
    会不会 删除掉 服务器
  • 云服务器到期了数据会被删除吗
    云服务器到期后,通常情况下数据并不会立即被删除。云服务提供商通常会在服务器到期之后一段时间内保留用户的数据,以便用户能够续费或备份数...
    99+
    2023-08-29
    云服务器
  • 云服务器到期了数据会不会被删除了呢
    云服务器通常是按照使用时长进行计费的,而且如果您的数据不再需要,您可以随时从云服务器中删除。但是有几个因素可能会影响您的数据能否删除: 数据存储位置:如果您的云服务器是存储在本地,那么数据可能不会被删除,但是如果您将数据存储在云服务器之...
    99+
    2023-10-26
    会不会 服务器 数据
  • 云服务器到期了数据会不会被删除掉呢
    云服务器通常是按照预先定义的规则将数据保存在服务器上的,如果云服务器到期或者更换了主机,那么相应的数据可能不会被及时删除或迁移。 如果你在云服务器上保存了重要的文档、数据、文件等,那么一旦到期或者发生更改,可能会对你的系统产生一定的影响,...
    99+
    2023-10-26
    会不会 删除掉 服务器
  • 云服务器到期了数据会不会被删除了呀
    云服务器通常是按照服务条款规定的使用期限进行续费的,如果您的数据在使用期限前到期,通常不会被自动删除。但是,在某些情况下可能会出现数据被删除的情况,具体取决于数据的安全和保密性质。 如果您已经按照服务条款和数据保护规定提交了数据,但可能已...
    99+
    2023-10-26
    会不会 服务器 数据
  • 数据库redis Db与键过期删除方法是什么
    本篇内容主要讲解“数据库redis Db与键过期删除方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“数据库redis Db与键过期删除方法是什么”吧!一...
    99+
    2024-04-02
  • Redis是怎么判断数据是否过期的
    Redis 判断数据是否过期主要通过两种方式: 使用惰性删除:当客户端尝试获取某个键的值时,Redis 会先检查该键是否过期,如...
    99+
    2024-04-09
    Redis
  • 云服务器到期了数据会不会被删除了呢苹果
    是的,云服务器到期后,数据也可能会被删除。通常情况下,数据删除会涉及到数据完整性校验的问题,如果你的数据没有被任何第三方知晓或访问,删除是不可逆转的。 以下是一种可能的删除方法: 数据备份:首先,你需要确保将数据备份存储在一个安全可靠的...
    99+
    2023-10-27
    会不会 苹果 服务器
  • 云服务器到期了数据会不会被删除了呀苹果
    您好,如果您的服务器到期并且您还没有将其从云服务器上删除,那么您的数据将永远保存在云服务器上,不会被删除。然而,如果您选择删除服务器上的数据,则您的数据将不可用并且可能需要进行数据恢复。 如果您对您的数据有任何担忧,您可以通过以下步骤来删...
    99+
    2023-10-27
    会不会 苹果 服务器
  • 云服务器到期了数据会不会被删除掉呢怎么办
    云服务器到期后,可能会存在数据无法被访问的情况。以下是一些可能导致云服务器数据删除的因素: 访问异常:云服务器可能正在维护、更新或停机维护,因此访问异常可能会导致数据被删除。可以尝试重新登录云服务器或者查看日志文件,以了解访问异常的具体...
    99+
    2023-10-27
    会不会 删除掉 服务器
  • 云服务器到期了数据会不会被删除了呢怎么办
    云服务器到期后,可能会存在数据丢失的风险,建议您定期备份数据,并确保在服务器过期前进行更新。 首先,您可以使用一些备份工具(比如NAS)在云服务器上创建一个备份。然后,将需要备份的数据存储在一个本地硬盘或其他云存储设备上,并在服务器过期之...
    99+
    2023-10-27
    会不会 服务器 数据
  • 云服务器到期了数据会不会被删除了呀怎么办
    云服务器到期后,可能会存在数据丢失的风险,这是因为云服务器是按照合同约定提供服务,如果到期未续费,用户的数据将会丢失,因此数据是否被删除取决于云服务器的存储方式。 如果是使用公共云服务,例如Amazon EC2和Google Drive,...
    99+
    2023-10-27
    会不会 服务器 数据
  • 云服务器到期了数据会不会被删除了呢苹果12
    首先,我们需要了解云服务器的数据是否会被删除。一般来说,云服务器的数据存储是以数据块的形式进行存储的,一旦数据存储到期,数据就会被删除。这是因为云服务器的存储机制是基于数据块的,当数据存储到期时,系统会自动删除之前保存的数据块,以腾出空间供...
    99+
    2023-10-27
    会不会 苹果 服务器
  • redis如何移除过期的数据
    在Redis中,可以通过设置过期时间来自动移除过期的数据。可以使用EXPIRE命令或者TTL命令来设置键的过期时间,并使用TTL命令...
    99+
    2024-04-26
    redis
  • 云服务器到期了数据会不会被删除了呢苹果手机
    首先,云服务器是一种虚拟的计算资源,因此在使用云服务器时需要按照相应的协议和服务条款来使用。如果到期的时间不太紧迫,一般情况下可以选择续费,以避免数据被删除的风险。当然,如果到期时间太过频繁,或者用户没有按照预期续费,也有可能导致数据被删除...
    99+
    2023-10-28
    会不会 苹果 服务器
  • 云服务器到期了数据会不会被删除了呀怎么回事
    云服务器到期后,可能会被暂停使用。如果您想要删除云服务器上的数据,您可以通过以下步骤来删除云服务器上的数据: 登录 cloudstorage 或 datacenter 账户。 点击“查看云服务”选项卡,查看云服务提供商的网站上的相关信息...
    99+
    2023-10-27
    会不会 怎么回事 服务器
  • php删除数据库提示是否删除
    在 Web 开发中,储存数据的数据库是常见的一种技术手段。而在数据库中删除数据则是一个极其常见的操作。当用户执行删除操作时,你是否曾考虑给用户一个提示,以避免误删重要数据?本文将探讨在 PHP 中如何给用户一个提示以确认是否真的需要删除数据...
    99+
    2023-05-24
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作