数据删除策略|学习笔记

简介: 快速学习数据删除策略

开发者学堂课程【Redis 入门到精通(进阶篇):数据删除策略】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/765/detail/13439


数据删除策略

 

本章主要讲解数据删除的策略

内容介绍

一、定时删除

二、惰性删除

 

一、定时删除

1.定义

创建一个定时器,当 key 设置有过期时间到达时,由定时器任务立即执行对键的删除操作。

此图为以图片形式看效果:

image.png

2. 优点

节约内存,到时就删除,快速释放掉不必要的内存占用。

3. 缺点

cpu 压力很大,无论 cpu 此时负载量多高,均占用 cpu,会影响 redis 服务器响应时间和指令吞吐量。

4. 总结

用处理器性能换取储存空间。(拿时间换空间)

 

二、惰性删除

1.定义

数据到达过期时间,不做处理,等下次访问该数据时。

注意,数据已经过期,等下次访问时是不可以告诉还有的,会表示已经没有。但是,这时数据还在,这个点删除的,便是,惰性删除。

此图为老师更加详细说明惰性删除:

image.png

2. 注意点

如果未过期,返回数据。发现已过期,删除,返回不存在。

操作方法:内部有一个名为 ecpireIFNeeded(),这是一个函数,也就是掉任何函数数据操作之前,内部都将执行这个操作。这个操作就是检查数据是否过期。注意,所有的 get 操作与这个操作都会绑定,也就是,不管执行什么样的获取数据,都要经过 ecpireIFNeeded()。

3. 优点

节约 cpu 的性能,不是按时间删除,而是发现另一个过期数据的时候才会删除。也就是说,发现必须删除的时候才会删除。

4. 缺点

内存压力很大,因为大量的数据,删除以后不用,它也会留下来,这就会出现长期占内存的问题。

5. 总结

用存储空间换取处理性能。这种策略适用于,处理器相对比较紧张,但是储存空间很大时。也就是说,内存大,cpu 小。用数据结构的思想来总结,就是拿时间换空间。和前面所讲解的删除策略是截然对立的一个对立。

相关文章
请问单位机房自建服务器,如何备案?
事业单位,领导要求自建web服务器,服务器放在单位机房,请问如何备案?如何域名在阿里云购买,如何备案。
|
存储 Ubuntu Linux
sudo apt update和sudo apt upgrade有啥区别
【4月更文挑战第1天】
6113 4
|
10月前
|
机器学习/深度学习 数据采集 计算机视觉
《深度学习:图像质量提升的魔法钥匙》
在数字化时代,图像质量常受噪声、雾气等因素影响。深度学习通过卷积神经网络(CNN)、自动编码器和生成对抗网络(GAN)等技术,为图像去噪、去雾和增强提供了高效解决方案。CNN自动提取特征,去除噪声和雾气;自动编码器通过低维表示重构图像;GAN通过对抗训练生成高质量图像。实践中需注重数据预处理、选择合适架构、模型训练及评估优化,以提升图像质量。深度学习正不断推动图像处理技术的进步。
430 21
|
9月前
|
开发者 异构计算
高效部署通义万相Wan2.1:ComfyUI文生/图生视频实战,工作流直取!
通义万相Wan2.1开源不到一周,已登顶HuggingFace Model 和 Space 榜双榜首,在HuggingFace和ModelScope平台的累计下载量突破100万次,社区热度持续攀升!为响应小伙伴们对ComfyUI工作流运行Wan2.1的强烈需求,社区开发者整理了实战教程👇
7258 23
高效部署通义万相Wan2.1:ComfyUI文生/图生视频实战,工作流直取!
|
监控 API 索引
Elasticsearch集群使用 _cluster/health API
Elasticsearch集群使用 _cluster/health API
490 2
|
Shell 数据库
GBase8a 数据库新集群第一次创建dblink
GBase8a 数据库新集群第一次创建dblink
|
存储 Linux 调度
KVM 虚拟化的功能特性
【10月更文挑战第13天】虚拟化技术创建实体资源的虚拟版本,提升资源利用率。KVM(Kernel-based Virtual Machine)作为全虚拟化解决方案,借助Linux内核实现Hypervisor功能,通过模块化方式提供高效的虚拟化环境。
|
存储 设计模式 测试技术
了解三层架构:表示层、业务逻辑层、数据访问层
了解三层架构:表示层、业务逻辑层、数据访问层
7222 0
|
Linux Android开发 iOS开发
Android经典实战之Kotlin Multiplatform跨平台开发
KMP(Kotlin Multiplatform)是由JetBrains开发的开源技术,让开发者能在多平台间高效重用代码,保留原生编程优势。适用于Android/iOS应用、多平台库及桌面应用开发。KMP支持代码共享、预期与实际声明机制,具备灵活性、稳定性和性能优势。通过Compose Multiplatform可实现跨平台UI共享。开发者可访问官方文档开始学习。
780 1
|
NoSQL 关系型数据库 MySQL
开发者福音:用IDEA和Iedis2加速Redis开发与调试
开发者福音:用IDEA和Iedis2加速Redis开发与调试
264 0
开发者福音:用IDEA和Iedis2加速Redis开发与调试