开发者学堂课程【Redis 入门到精通(进阶篇):数据删除策略】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/765/detail/13439
数据删除策略
本章主要讲解数据删除的策略
内容介绍
一、定时删除
二、惰性删除
一、定时删除
1.定义:
创建一个定时器,当 key 设置有过期时间到达时,由定时器任务立即执行对键的删除操作。
此图为以图片形式看效果:
2. 优点:
节约内存,到时就删除,快速释放掉不必要的内存占用。
3. 缺点:
cpu 压力很大,无论 cpu 此时负载量多高,均占用 cpu,会影响 redis 服务器响应时间和指令吞吐量。
4. 总结:
用处理器性能换取储存空间。(拿时间换空间)
二、惰性删除
1.定义:
数据到达过期时间,不做处理,等下次访问该数据时。
注意,数据已经过期,等下次访问时是不可以告诉还有的,会表示已经没有。但是,这时数据还在,这个点删除的,便是,惰性删除。
此图为老师更加详细说明惰性删除:
2. 注意点:
如果未过期,返回数据。发现已过期,删除,返回不存在。
操作方法:内部有一个名为 ecpireIFNeeded(),这是一个函数,也就是掉任何函数数据操作之前,内部都将执行这个操作。这个操作就是检查数据是否过期。注意,所有的 get 操作与这个操作都会绑定,也就是,不管执行什么样的获取数据,都要经过 ecpireIFNeeded()。
3. 优点:
节约 cpu 的性能,不是按时间删除,而是发现另一个过期数据的时候才会删除。也就是说,发现必须删除的时候才会删除。
4. 缺点:
内存压力很大,因为大量的数据,删除以后不用,它也会留下来,这就会出现长期占内存的问题。
5. 总结
用存储空间换取处理性能。这种策略适用于,处理器相对比较紧张,但是储存空间很大时。也就是说,内存大,cpu 小。用数据结构的思想来总结,就是拿时间换空间。和前面所讲解的删除策略是截然对立的一个对立。