Redis 过期键删除策略

栏目: 数据库 · 发布时间: 4年前

内容简介:Redis 中数据库键的过期时间都保存在过期字典中,当一个键过期了,Redis 存在三种不同的删除策略:定时删除、惰性删除和定期删除在设置键的过期时间的同时创建一个计时器,让定时器在键过期时间来临时,立即执行对键的删除操作。定时删除策略对内存是最友好的:通过使用定时器,定时删除策略可以保证过期键会尽快被删除,并且释放过期键所占用的内存。

Redis 中数据库键的过期时间都保存在过期字典中,当一个键过期了,Redis 存在三种不同的删除策略:定时删除、惰性删除和定期删除

定时删除

定义

在设置键的过期时间的同时创建一个计时器,让定时器在键过期时间来临时,立即执行对键的删除操作。

定时删除策略对内存是最友好的:通过使用定时器,定时删除策略可以保证过期键会尽快被删除,并且释放过期键所占用的内存。

但是另一方面,它对 CPU 时间是嘴不友好的:在过期键比较多的情况下,删除过期键这一行为可能会占用相当一部分的 CPU 时间,在内存不紧张但是 CPU 时间紧张的情况下,将 CPU 时间用在删除和当前任务无关的过期键上,无疑会对服务器的响应时间和吞吐量造成影响。

惰性删除

定义

放任过期键不管,但是每次从键空间中获取键时都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期则返回该键。

惰性删除策略对 CPU 时间来说是最友好的,但是它对内存是最不友好的:如果一个键已经过期,而这个键又恰好没有被访问到的话,那么它可能永远都不回被删除,甚至可以将这种情况视为一种内存泄漏 —— 无用的垃圾数据占用了大量的内存,而服务器却不能主动去释放它们,这对于运行状态非常依赖于内存的 Redis 服务器来说,并不是一个好消息。

定期删除

定义

每隔一段时间,程序都会对数据库进行一次检查,删除里面的过期键。至于要删除多少过期键,以及要检查多少个数据库,则由算法决定。

从上面对定时删除和惰性删除的讨论来看,这两种删除方式在单一使用时都有非常明显的缺陷, 定期删除策略可以看作是两种策略的一种整合和折中:

  • 定期删除策略每隔一段时间执行一次删除过期键操作,并通过限制删除操作执行的时长和频率来减少删除操作对 CPU 时间的影响。
  • 通过定期删除过期键,定期删除策略有效减少了因为过期键而带来的内存浪费

但是定期删除策略的难点是确定删除操作执行的时长和频率:

  • 如果删除操作执行太过频繁,或者执行的时间太长,定期删除策略就会退化成定时删除策略,以至于 CPU 时间过多的消耗在删除过期键上
  • 如果删除操作执行的太少,或者执行的时间太短,定期删除策略又会和惰性删除策略一样,出现浪费内存的情况

下面关于 Redis 的文章您也可能喜欢,不妨参考下:

Ubuntu 14.04下Redis安装及简单测试 https://www.linuxidc.com/Linux/2014-05/101544.htm

Redis主从复制基本配置 https://www.linuxidc.com/Linux/2015-03/115610.htm

CentOS 7下Redis的安装与配置 https://www.linuxidc.com/Linux/2017-02/140363.htm

Ubuntu 14.04安装Redis与简单配置 https://www.linuxidc.com/Linux/2017-01/139075.htm

Ubuntu 16.04环境中安装 PHP 7.0 Redis扩展 https://www.linuxidc.com/Linux/2016-09/135631.htm

Redis 单机&集群离线安装部署 https://www.linuxidc.com/Linux/2017-03/141403.htm

CentOS 7.0 安装Redis 3.2.1详细过程和使用常见问题 https://www.linuxidc.com/Linux/2016-09/135071.htm

Ubuntu 16.04环境中安装PHP7.0 Redis扩展 https://www.linuxidc.com/Linux/2016-09/135631.htm

Ubuntu 15.10下Redis集群部署文档 https://www.linuxidc.com/Linux/2016-06/132340.htm

Redis实战 中文PDF http://www.linuxidc.com/Linux/2016-04/129932.htm

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2019-02/157115.htm


以上所述就是小编给大家介绍的《Redis 过期键删除策略》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

面向模式的软件体系结构(卷1) (平装)

面向模式的软件体系结构(卷1) (平装)

Frank Buschmann、Regine meunier、Hans Rohnert、Peter Sommerlad、Michael Stal / 贲可荣、郭福亮 / 机械工业出版社 / 2003-1 / 45.0

一起来看看 《面向模式的软件体系结构(卷1) (平装)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具