博客
关于我
【redis键过期删除策略】很高兴再次认识你
阅读量:301 次
发布时间:2019-03-03

本文共 722 字,大约阅读时间需要 2 分钟。

Redis键过期删除策略

三种删除策略

在设计缓存系统时,如何有效地删除有时间限制的键是一个重要问题。以下是几种常见的删除策略:

  • 定时删除:在创建键时,设置一个定时任务,定期检查该键是否过期。这种方法简单直观,但在大量缓存场景下显得力不从心,因为过期时间可能各不相同。

  • 定期删除:采用周期性扫描的方式,定期清理过期键。这种方法可以通过遍历数据库中的expires字典来实现,避免了同时处理大量过期键的问题。Redis采用了类似的策略,但避免了遍历所有键,而是通过分段处理。

  • 惰性删除:利用Redis的异步删除机制。在键被访问时,检查是否过期,如果过期则执行删除操作。这种方式在大部分情况下能有效减少主动删除的开销。

  • Redis的实现方式

    Redis采用了定期删除惰性删除两种方式。定期删除在大量缓存场景下显得力不从心,原因在于过期时间各不相同,导致大量无效删除操作。

    定期删除

    Redis的定期删除机制采用了分段扫描的方式。通过全局变量控制扫描进度和执行时间限制,避免了一次性遍历所有键的高风险操作。这种方法在大规模缓存场景下表现优异。

    惰性删除

    惰性删除是Redis另一种核心机制。在键被访问时,通过expireIfNeeded函数判断是否过期。如果过期,则执行删除操作。这种方式在大部分情况下能有效减少主动删除的开销,特别是在缓存访问频繁的情况下。

    实现细节

    Redis的惰性删除机制还包含以下关键部分:

    • 过期判断:通过keyIsExpired函数判断键是否过期。
    • 删除操作:根据配置选择同步删除或异步删除。
    • 事件通知:在键过期时触发NOTIFY_EXPIRED事件,支持异步处理。

    这种设计既保证了缓存的正确性,又在实际应用中表现出色。

    转载地址:http://rlxm.baihongyu.com/

    你可能感兴趣的文章
    nvidia-smi 参数详解
    查看>>
    Nvidia驱动失效,采用官方的方法重装更快
    查看>>
    nvmw安装node-v4.0.0之后版本的临时解决办法
    查看>>
    nvm切换node版本
    查看>>
    nvm安装以后,node -v npm 等命令提示不是内部或外部命令 node多版本控制管理 node多版本随意切换
    查看>>
    ny540 奇怪的排序 简单题
    查看>>
    NYOJ 1066 CO-PRIME(数论)
    查看>>
    nyoj------203三国志
    查看>>
    nyoj58 最少步数
    查看>>
    OAuth2 + Gateway统一认证一步步实现(公司项目能直接使用),密码模式&授权码模式
    查看>>
    OAuth2 Provider 项目常见问题解决方案
    查看>>
    OAuth2 vs JWT,到底怎么选?
    查看>>
    Vue.js 学习总结(14)—— Vue3 为什么推荐使用 ref 而不是 reactive
    查看>>
    oauth2-shiro 添加 redis 实现版本
    查看>>
    OAuth2.0_JWT令牌-生成令牌和校验令牌_Spring Security OAuth2.0认证授权---springcloud工作笔记148
    查看>>
    OAuth2.0_JWT令牌介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记147
    查看>>
    OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
    查看>>
    OAuth2.0_完善环境配置_把资源微服务客户端信息_授权码存入到数据库_Spring Security OAuth2.0认证授权---springcloud工作笔记149
    查看>>
    OAuth2.0_授权服务配置_Spring Security OAuth2.0认证授权---springcloud工作笔记140
    查看>>
    OAuth2.0_授权服务配置_令牌服务和令牌端点配置_Spring Security OAuth2.0认证授权---springcloud工作笔记143
    查看>>