【跳槽面试】Redis的过期键删除策略?

前言

key的生存时间到了,Redis会立即删除吗?不会立即删除。

过期策略

  • 定时删除:在设置key的过期时间的同时,为该key创建一个定时器,让定时器在key的过期时间来临时,对key进行删除

  • 定期删除:Redis每隔一段时间就去会去查看Redis设置了过期时间的key,会再100ms的间隔中默认查看3个key。

  • 惰性删除

key过期的时候不删除,每次通过key获取值的时候去检查是否过期,若过期,则删除,返回null(用的时候再检查删除) 当去查询一个已经过了生存时间的key时,Redis会先查看当前key的生存时间是否已经到了,是则直接删除当前key,并且给用户返回一个空值。

Redis采用的过期策略

**Redis采用的过期策略:**惰性删除+定期删除

    1. 惰性删除流程:在进行get或setnx等操作时,先检查key是否过期,若过期,删除key,然后执行相应操作;若没过期,直接执行相应操作
    1. 定期删除流程:遍历每个数据库,检查当前库中的指定个数个key(默认是每个库检查20个key,注意相当于该循环执行20次,循环体时下边的描述)

    2. a. 如果当前库中没有一个key设置了过期时间,直接执行下一个库的遍历。

    3. b. 随机获取一个设置了过期时间的key,检查该key是否过期,如果过期,删除key。

    4. c. 判断定期删除操作是否已经达到指定时长,若已经达到,直接退出定期删除。


技术交流

一个人走的很快,一群人走的更远。


相关推荐
暗不需求11 分钟前
从零实现一个 Vue Todos 任务清单:深入响应式编程与组合式 API
前端·vue.js·面试
Raink老师34 分钟前
【AI面试临阵磨枪-90】Skill 之间如何调用、依赖、组合、编排?
面试·职场和发展
Raink老师1 小时前
【AI面试临阵磨枪-92】Skill 开发规范:命名、文档、测试、日志、监控、告警?
java·面试·log4j
我是一颗柠檬1 小时前
【Redis】哨兵机制Day10
数据库·redis·后端·缓存
努力努力再努力wz1 小时前
【C++高阶数据结构系列】:跳表 SkipList 详解:多层索引、随机晋升与C++ 完整实现(附跳表实现的源码)
开发语言·数据结构·数据库·c++·redis·缓存·skiplist
Raink老师1 小时前
【AI面试临阵磨枪-93】Skill 性能优化:冷启动、并发、内存、IO、缓存?
人工智能·面试·性能优化
Devin~Y1 小时前
从Spring Boot到AI Agent:大厂Java微服务面试三轮实战问答解析
java·spring boot·redis·spring cloud·微服务·ai·kafka
一只小白0002 小时前
【JVM | 第四篇】—— JVM 内存分配
jvm·面试
Raink老师2 小时前
【AI面试临阵磨枪-89】Skill 幻觉、参数缺失、格式错误、业务异常如何处理?
面试·职场和发展
Trouvaille ~2 小时前
【Redis篇】Redis 事务:原子性与脚本执行机制
数据库·redis·后端·算法·junit·lua·原子性