Redis 删除策略

news/2025/1/9 13:26:28/

Redis中的数据删除策略包括定:时删除、惰性删除、定期删除

一、Redis过期时间设置

Redis提供了四个命令来设置过期时间(生存时间)。

  • EXPIRE :表示将键 key 的生存时间设置为 ttl 秒。
  • PEXPIRE :表示将键 key 的生存时间设置为 ttl 毫秒。
  • EXPIREAT :表示将键 key 的生存时间设置为 timestamp 所指定的秒数时间戳。
  • PEXPIREAT :表示将键 key 的生存时间设置为 timestamp 所指定的毫秒数时间戳。

二、定时删除

当key设置有过期时间,且过期时间到达时,立即执行key的删除操作

  • 优点:节约内存,到时就删除,立即释放不必要的内存占用
  • 缺点:CPU压力较大,无论CPU此时负载量多高,均占用CPU,会影响redis服务器响应时间和指令吞吐量
  • 总结:用处理器性能换取存储空间(时间换空间),适用于小内存,强CPU场景

三、惰性删除 (空间换时间)

数据到达过期时间,先不做处理。等下次访问该数据时,发现数据已过期,删除,给客户端返回不存在。

  • 优点:节约CPU性能,发现不得不删除的时候才删除
  • 缺点:内存空间压力很大,出现长期占用内存的数据
  • 总结:用存储空间换取处理器性能 (空间换时间),适用于大内存,弱CPU场景

四、 定期删除(中和以上两种方案)

由redis.c/activeExpireCycle 函数实现,函数以一定的频率运行,每次运行时,都从一定数量的数据库中取出一定数量的随机键进行检查,并删除其中的过期键。

注意:并不是一次运行就检查所有的库,所有的键,而是随机检查一定数量的键。

定期删除函数的运行频率,在Redis2.6版本中,规定每秒运行10次,大概100ms运行一次。在Redis2.8版本后,可以通过修改配置文件redis.conf 的 hz 选项来调整这个次数。

 

  • 特点1:CPU性能占用设置有峰值,检测频度可自定义设置
  • 特点2:内存压力不是很大,长期占用内存的冷数据会被持续清理

五、三种删除方案对比

内存占用

CPU占用特征

定时删除

节约内存,无占用

不分时段占用CPU资源,频度高

时间换空间
惰性删除

内存占用严重

延时执行,CPU利用率高

空间换时间

定期删除

内存定期随机清理

每秒花费固定的CPU资源维护内存

随机抽查,重点抽查

六、逐出算法


http://www.ppmy.cn/news/482357.html

相关文章

linux-7 awk

目录 1.awk默认规则 2.处理方式 3.格式 4.运算 5.getline 6. 文件内容匹配过滤打印 7.begin . end模式 8.awk条件判断打印 9.awk三元表达 10.awk精准筛选 11.awk数组 1.awk默认规则 当以多空格为分隔符时 自动压缩成一个 默认操作就是打印 默认分隔符时空格 2.处理…

不同业务场景、不同数据类型,对应亚马逊云科技不同数据库服务

小小的改变,标志一个新时代的全面开启,一个数据库的云原生时代。前不久,Gartner公布了一组数据,引起了不小的讨论度。在2022年全球数据库管理系统的市场份额排名中,作为纯云厂商的亚马逊云科技,超越了老牌传…

SpringBoot 如何使用 IOC 容器

SpringBoot 如何使用 IOC 容器 Spring 是一个非常流行的 Java 开发框架,它提供了一个强大的 IoC(Inversion of Control)容器来管理 Java 对象之间的依赖关系。在 SpringBoot 中,我们可以非常方便地使用这个 IoC 容器来管理我们的…

如何绘制甘特图?这个软件来帮你

最好用的甘特图软件是什么?先看效果,再放教程: 这是大家用的比较多的excel做出的甘特图: 这是我做的动态甘特图: 两种方法,分享给大家,按需选择即可。 第一种:用Excel制作甘特图 用…

【玩转Docker小鲸鱼叭】虚拟化技术简介

什么是虚拟化技术? Docker 是一款基于容器虚拟化技术构建的软件,那到底什么虚拟化技术呢?在学习 Docker 之前,先简单了解下虚拟化技术。 虚拟化是云原生的实现基础,它能够帮助我们更加有效地利用物理计算机硬件。 虚…

Oracle自动化巡检脚本出炉

巡检脚本如下: [oracleoracle-db-19c check]$ ls -ltr total 24 -rw-r--r--. 1 oracle oinstall 22753 Jan 5 16:12 ORAcheck.sql [oracleoracle-db-19c check]$ cat ORAcheck.sql set heading off select 一、数据库的基本情况 from dual;set heading off select…

[资源数据]汉字含拼音注音笔画数(续)

[LzmTW(水如烟) 20080101]汉字 <!--LzmTW(水如烟) 20080101汉字--><row Char"珢" Unicode"29666" Zhuyins"kn ken yn yin" Pinyins"KEN4 KEN5 YIN2 YIN5" Stroke"10" /><row Char"珣" Unicode&qu…

ARM程序由于字节对齐引起的问题深入分析

首先说说&#xff0c;什么叫对齐。如果一个数据是从偶地址开始的连续存储&#xff0c;那么它就是半字对齐&#xff0c;否则就是非半字对齐&#xff1b;半字对齐的特征是bit00,其他位为任意值。字对齐的特征是bit10,bit01,其他位为任意值。如果一个数据是以能被4 整除的地址开始…