前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis 键的生存时间和过期时间

Redis 键的生存时间和过期时间

作者头像
Meteors
发布2021-12-08 20:20:10
9470
发布2021-12-08 20:20:10
举报
文章被收录于专栏:星空畅想星空畅想

Redis的键可以设置生存时间和过期时间,这个过期时间是如何设置的呢,可以简单看下:

通过 EXPIRE 命令或者 PEXPIRE 命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间(TTL),在经过制定的秒数或者毫秒数之后,服务器就会自动删除生存时间为0的键。

过期键删除策略研究

一个键过期了,什么时候会被删除呢?这个问题有三种可能的答案,分别代表了三种不同的删除策略:

  • 定时删除:在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除操作。这种策略对内存是友好的,保证过期键尽可能的被删除。对CPU时间是不友好的,在过期键很多的情况下,删除过期键往往耗费了不少的CPU资源;
  • 惰性删除:放任键过期不管,但每次获取键时,查询是否过期,如果过期就删除该键,否则就返回该键。这种策略对CPU时间是友好的,因为只有访问的时候才判断是否删除,基本不占用CPU资源。但是对内存又是不友好的,有很多键不会再被访问但是不会被删除,一直存在内存中;
  • 定期删除:每隔一段时间,程序就要对数据库进行一次检查,删除里面的过期键,这种策略难点是定期执行的频率和时长不好把控。

Redis实际上使用的是惰性删除和定期删除,惰性策略,大家可以仔细研究一下。

AOF 和 RDB对过期键的处理

生成RDB文件

在创建一个新的RDB文件时,程序会对数据库中的键进行检查,已经过期的键不会被保存在新创建的RDB文件中。

载入RDB文件

当服务器是主服务器时,RDB文件中过期的键将被忽略;当服务器是从服务器时,RDB文件中的过期的键将被会写入数据库。

AOF文件写入

当服务器以AOF持久化运行时,如果数据库的某个键已经过期,但是还没有被删除,那么AOF文件不受影响。

AOF重写

在执行AOF重写时,程序会对数据库中的键进行检查,已经过期的键不会被保存在重写的AOF文件中。

总结

Redia对键的过期删除主要是定期删除和惰性删除两种。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021年06月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 过期键删除策略研究
  • AOF 和 RDB对过期键的处理
    • 生成RDB文件
      • 载入RDB文件
        • AOF文件写入
          • AOF重写
          • 总结
          相关产品与服务
          云数据库 Redis
          腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档