(十四)redis过期策略
(1)过期删除
大家都知道可以对redis的的key设置过期时间,一到时间key就失效。但是redis是怎么对失效的key进行删除的?答案是:定期删除+惰性删除
定期删除
- 从过期的字典中随机20个key
- 删除20个key中已经过期的
- 如果过期的key比例超过四分之一,就重复步骤一
惰性删除
从库的过期策略:从库对过期的处理是被动的,当主库key到期时会在AOF文件里面加一条del指令,同步到所有的从库中去,从库通过这个指令进行过期删除因为主库过期的key的del指令是 异步进行的,会存在主从数据不一致问题。分布式锁的漏洞就是因为这个问题导致的
总结
问题:如果定期删除+惰性删除还是漏掉了许多key,导致内存耗尽怎么办答案:走内存淘汰机制。
(2)内存淘汰
- noeviction:当内存不足以容纳新写入数据时,新写入操作会报错,这个一般没人用吧,实在是太恶心了
- allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key(这个是最常用的)
- allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key,这个一般没人用吧,为啥要随机,肯定是把最近最少使用的key给干掉啊
- volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key(这个一般不太合适)
- volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key
- volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除
(十四)redis过期策略相关推荐
- @cacheable 设置过期时间_缓存面试三连击——聊聊Redis过期策略?内存淘汰机制?再手写一个LRU 吧!...
大家好,今天我和大家想聊一聊有关redis的过期策略的话题. 听到这里你也许会觉得:"我去,我只是个日常搬砖的,这种偏底层的知识点,我需要care吗?" 话虽如此·,但是兄die, ...
- PyTorch框架学习十四——学习率调整策略
PyTorch框架学习十四--学习率调整策略 一._LRScheduler类 二.六种常见的学习率调整策略 1.StepLR 2.MultiStepLR 3.ExponentialLR 4.Cosin ...
- redis 过期策略
redis 过期策略是:定期删除+惰性删除. 所谓定期删除,指的是 redis 默认是每隔 100ms 就随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除. 假设 redis 里放 ...
- Redis 过期策略和淘汰策略
1.Redis 过期策略 Redis 过期策略用于处理设置了缓存时间的数据,使用定时扫描和惰性删除机制删除到期的缓存数据. Redis 将设置了过期时间的 key 保存在一个独立的字典中,定时扫描就是 ...
- redis过期策略与淘汰策略
redis过期策略与淘汰策略 1.过期策略 2.淘汰策略 3.在哪里配置? 4.Lazy Free 1.过期策略 1.redis中所有的key都可以通过expire命令来设置过期时间,所有被设置了过期 ...
- redis过期策略和持久化
Redis过期策略 注:本文主要参考自<Redis设计与实现> 1.设置过期时间 expire key time(以秒为单位)--这是最常用的方式 setex(String key, in ...
- Redis过期策略与内存淘汰机制
参考博客:https://blog.csdn.net/u010006156/article/details/124914082 Redis过期策略与内存淘汰机制 过期策略简介 作用 redis数据都是 ...
- 【带你重拾Redis】Redis过期策略 和 内存淘汰策略(key回收)
过期策略 我们set key的时候,都可以给一个expire time,就是过期时间,指定这个key比如说只能存活1个小时,我们自己可以指定缓存到期就失效. 如果假设你设置一个一批key只能存活1个小 ...
- Redis过期策略及实现原理
2019独角兽企业重金招聘Python工程师标准>>> 我们在使用redis时,一般会设置一个过期时间,当然也有不设置过期时间的,也就是永久不过期. 当我们设置了过期时间,redis ...
最新文章
- Dropout也能自动化了,谷歌大神Quoc Le等人利用强化学习自动找寻模型专用Dropout...
- Spring data redis应用示例
- CodeBlocks 20.03 配置 wxWidgets 3.1.4
- 小ck活动机器人包包_别只知道小 CK!这 5 款小众包包更值得买
- 微型计算机可以处理的二进制数据长度,可以处理二进制数据长度的是
- 如何在Kubernetes上运行PostgreSQL
- 推特股东起诉马斯克逾期披露推特持股信息
- raid5 合适 多少块硬盘_分析Linux raid6同步成raid5导致数据丢失的情况
- 使用Visual Studio Code + Node.js搭建TypeScript开发环境
- 设备参数—支持网络外部的通信
- JIRA数据库的迁移,从HSQL到MYSQL/Oracle
- 下、Hadoop环境搭建——通过Xshell6连接VMware正式配置Hadoop
- python绘制人物关系图,Python来袭,教你用Neo4j构建“复联4”人物关系图谱!
- 收藏 | 机器学习分类算法
- 长沙民政职业技术学院计算机网络技术专业,长沙民政职业技术学院计算机网络技术专业...
- 淘宝系商品详情系统架构设计
- 19【numpy中的nan和常用方法】01numpy中的nan和常用统计方法
- S32K144烧写程序记录
- 你们要的线上GC问题案例来啦
- 2014年教育领域五大事件立业公信