问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么往Redis写入的数据会突然消失了?

发布网友 发布时间:2022-11-27 17:48

我来回答

1个回答

热心网友 时间:2023-10-17 18:05

可能有人会遇到,Redis 经常会丢掉一些数据,写进去了,过一会儿可能就没了。那么你可能是将Redis当成存储了而没有当作缓存。啥叫缓存?用内存当缓存。内存是无限的吗,内存是很宝贵而且是有限的,磁盘是廉价而且是大量的。可能一台机器就几十个 G 的内存,但是可以有几个 T 的硬盘空间。Redis 主要是基于内存来进行高性能、高并发的读写操作的。

那既然内存是有限的,比如 Redis 就只能用 10G,你要是往里面写了 20G 的数据,会咋办?当然会干掉 10G 的数据,然后就保留 10G 的数据了。那干掉哪些数据?保留哪些数据?当然是干掉不常用的数据,保留常用的数据了。

还有一个问题就是数据明明过期了,怎么还占用着内存?这些问题主要是因为Redis内部的一些机制所导致的,接下来我将展开说说Redis的两个最基础机制。

Redis 过期策略

Redis 过期策略是: 定期删除+惰性删除 。

所谓 定期删除 ,指的是 Redis 默认是每隔 100ms 就随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除。

假设 Redis 里放了 10w 个 key,都设置了过期时间,你每隔几百毫秒,就检查 10w 个 key,那 Redis 基本上就死了,cpu 负载会很高的,消耗在你的检查过期 key 上了。注意,这里可不是每隔 100ms 就遍历所有的设置过期时间的 key,那样就是一场性能上的 灾难 。实际上 Redis 是每隔 100ms 随机抽取 一些 key 来检查和删除的。

但是问题是,定期删除可能会导致很多过期 key 到了时间并没有被删除掉,那咋整呢?所以就是惰性删除了。这就是说,在你获取某个 key 的时候,Redis 会检查一下 ,这个 key 如果设置了过期时间那么是否过期了?如果过期了此时就会删除,不会给你返回任何东西。

获取 key 的时候,如果此时 key 已经过期,就删除,不会返回任何东西。

但是实际上这还是有问题的,如果定期删除漏掉了很多过期 key,然后你也没及时去查,也就没走惰性删除,此时会怎么样?如果大量过期 key 堆积在内存里,导致 Redis 内存块耗尽了,咋整?

答案是: 走内存淘汰机制 。

内存淘汰机制

Redis 内存淘汰机制有以下几个:

noeviction: 当内存不足以容纳新写入数据时,新写入操作会报错,这个一般没人用吧,实在是太恶心了。

allkeys-lru :当内存不足以容纳新写入数据时,在 键空间 中,移除最近最少使用的 key(这个是 最常用 的)。

allkeys-random:当内存不足以容纳新写入数据时,在 键空间 中,随机移除某个 key,这个一般没人用吧,为啥要随机,肯定是把最近最少使用的 key 给干掉啊。

volatile-lru:当内存不足以容纳新写入数据时,在 设置了过期时间的键空间 中,移除最近最少使用的 key(这个一般不太合适)。

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

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

链接:https://juejin.cn/post/7037413800370241543
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找专业防水队做完还漏水怎么维权 法院会受理房屋漏水造成的纠纷吗? 巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 从杭实集团的基层管理人员项目培养看国企人才培养 国企领导者的领导力培训应注重哪些能力? 女球迷怒怼詹姆斯后,逼出全力詹!末节1分钟连拿9分,收割比赛 湖人对阵活塞,你认为詹姆斯的打法脏吗? 老詹巅峰16年为什么3次被挤出一阵呢? 女球迷因为骂詹姆斯被驱逐,为何这么多人对詹姆斯有偏见? 八月十五在夜市上摆摊卖花灯,能赚到钱吗? 适合写给孩子的陪伴的优美语句 有一种亲情叫手足 手足陪伴长大的句子 对论文的认识与理解 海南蓝泰邦生物技术有限公司怎么样? 10kV开关拒动还是保护拒动如何判断? 10kV、35KV架空线路短路、接地、断线、停送电等情况如何快速确定异常位置。 工装和家装有什么不懂?哪种装修更复杂,在建材质量上谁的要求更高? 工装建材行业转型做家装如何? 蝉的阅读答案,急急急!!! 红花和威灵仙一起泡脚一次用多少 我妈妈脚上有骨刺,医生建议白醋泡脚,但网上有中医说用威灵仙和红花煮水加陈醋。到底是用白醋还是陈醋? 威灵仙泡脚能治脚后跟底痛吗 地税发票取消导致退税,发票单位账本怎么处理 大便不通引起的上火喝三黄片可以吗? 我的卡用了7年了,户名还在别人名字上,那个人也找不到怎么实名制? 找不到号主本人了怎么实名制 如何获取他的手机号码的实名制个人信息。因为对方欠我的钱。只有个欠条。打官司发传票都找不到人地址。 森林防火安全教育 暑假森林防火安全教育(森林防火安全教育) 赞美员工辛勤工作的短句 松下微波炉电脑板排线怎么换 windows2003内存不自动回收 在keyshot里打灯光添加的圆盘灯光看不到是怎么回事 在一个叫做“贝仓”的无良电商平台购入“颐莲玻尿酸魔力海泉水” 一夜之间烂脸了 ,平台不肯赔偿怎么办 Beautiful Skin 歌词 your beautiful skin什么意思 记忆真的能脱离肉体而存在?多种现象表明,记忆是一种玄幻之物 你们觉得记忆会遗传吗? 白蜗牛原液是瑞士伊丽康欣公司生产的吗? USB数据库文件,怎么才能在电脑上看? 怎么转换为txt格式? 荣耀x20怎么设置输入法-荣耀x20怎么更改手机输入法 药店里能买到蒲公英中成药吗?