删除策略-定期删除|学习笔记

简介: 快速学习删除策略-定期删除

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

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


删除策略-定期删除

 

内容介绍

删除策略的方法

删除策略比对

 

本章主要讲解数据删除策略的方法与删除策略的三个方法比对


一,删除策略的方法

1.定期删除

拿空间换时间拿时间换空间的两种方法都比较极端定期删除是比较折中的方法

此图为讲解定期删除

image.png

定义:redis 启动服务器初始化时读取配置 sever.hz 的值默认为10。

(1).severCron()

这个默认值代表每秒钟执行 sever.hz severCron()。它是控制进度的对服务器进行一个定时轮询

(2).databasesCron()

轮询这个工作也叫做databasesCron(),继续对里边的每一个库进行录取它会挨个访问这些信息访问

(3).activeExpireCycle()

之后会对 databasesCron() 执行第三个操作这个操作命名为activeExpireCycle(),activeExpireCycle() 对每一个 expire[*] 逐一进行检查每次执行 250ms/sever.hz。也就是检查的时间定义为四分之一秒

作用:对某个 expire[*]  检测时随机挑选 W key 检测

(4).current_dp

参数 current_dp 用于记录activeExpireCycle() 进入哪个expire[*]执行。current_dp 专门保存当前的执行到位举例为如果把零检查完它会记下来如果把一检查完它会记下来这时到到期时由于已经记住会保障它的轮询不会出现把某一个给落下的情况

(5).注意点

如果 key 超时则删除 key。

如果一轮中删除的key的数量大于 W*25%,循环该过程

如果一轮中删除的 key 的数量小于等于 W*25%,检查下一个 expire[*],0-15循环一个一个检查完是靠databasesCron() 来完成的而检查任意一个是靠activeExpireCycle() 来完成的

.W取值=ACTIVE_EXPIRE_CYCLE_LOOKUPS_PER_LOOP属性值也就是说活动时长的周期查找一个循环次数每次循环在里面找多少个就是它的一个随机策略挑选 k 的数量就靠这个参数设定

(6).总结

周期性轮询 redis 库中的时效性数据采用随机抽取的策略利用过期数据占比的方式控制删除频度

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

整体来说周期性抽查储存空间随机抽查重点抽查

 

二,删除策略比对

(1).定时删除

节约内存无占用不分时段占用 CPU 资源频度高总体来说定时删除是拿时间换空间

(2).惰性删除

内存占用严重延时执行,CPU 利用率高总体来说惰性删除是拿空间换时间

(3).定期删除

内存定期随机清理每秒花费固定的 CPU 资源维护内存总体来说定期删除是用随机抽查,重点抽查。

相关文章
|
缓存 Java Spring
Spring框架(四) 三级缓存与循环依赖
首先我们需要明白什么是循环依赖 , 打个比方 , 就是说A对象在创建的过程中 , 需要依赖注入B对象 , 但是B对象没有 , 就需要去创建 , 而在创建B对象的过程中又需要注入A对象 , A对象此时还在创建中,所以就构成了一个死循环 , A,B相互依赖 这样的关系被成为循环依赖(当然 , 可能还会有其他的情况),下面我们就来看看Spring是如何让解决循环依赖的
498 0
|
2月前
|
存储 缓存 Java
我们来说一说 JVM 的内存模型
我是小假 期待与你的下一次相遇 ~
267 5
|
5月前
|
搜索推荐 小程序 数据可视化
网站用户访问分析入门:新手必懂的6个关键指标
如果你正在运营一个网站,无论是产品官网还是电商平台,用户访问分析一定是绕不开的一项工作。 但对很多刚入门的新手来说,打开一个数据平台,常常是一脸懵: PV?UV?跳出率?这些到底是什么?要看哪些指标才有用? 这篇文章,我们一起看看网站访问分析中最基础的6个核心指标,帮你快速理解并掌握基本的分析能力。
1179 0
|
11月前
|
开发工具 git 开发者
图解Git——分支简介《Pro Git》
Git 分支是其核心特性之一,允许开发者从主开发线分离工作,避免干扰主线。传统版本控制系统创建分支效率低,而Git的分支创建和切换非常轻量高效。
602 9
|
Kubernetes 监控 Java
如何设置 Kubernetes的垃圾回收策略为定期
如何设置 Kubernetes的垃圾回收策略为定期
|
存储 关系型数据库 MySQL
MySQL——如何快速删除大表
MySQL——如何快速删除大表
274 0
|
存储 监控 安全
什么是日志管理,如何进行日志管理?
日志管理是对IT系统生成的日志数据进行收集、存储、分析和处理的实践,对维护系统健康、确保安全及获取运营智能至关重要。本文介绍了日志管理的基本概念、常见挑战、工具的主要功能及选择解决方案的方法,强调了定义管理目标、日志收集与分析、警报和报告、持续改进等关键步骤,以及如何应对数据量大、安全问题、警报疲劳等挑战,最终实现日志数据的有效管理和利用。
2213 0
成功解决:Could not resolve dependency: npm ERR! peer vue@“^3.0.2“ from vuex@4.0.2
这篇文章讨论了在使用npm安装依赖时遇到的一个常见问题,即无法解析依赖导致的"peer dependency"冲突错误。文章提供了几种解决方法,包括清除npm缓存、删除`node_modules`文件夹和`package-lock.json`文件,然后重新尝试安装,以解决版本冲突问题。
|
Go
go语言中格式化输出的占位符
【7月更文挑战第10天】`fmt` 包在 Go 语言中用于格式化输出,包括不同类型的占位符:%v(默认格式)、%+v(带字段名的结构体)、%#v(Go语法表示)、%T(类型表示)、%%(百分号)。布尔值用%t,整数有%b、%c、%d、%o、%q、%x、%X和%U。浮点数和复数用%b、%e、%E、%f、%g、%G。字符串和字节切片用%s、%q、%x、%X。指针用%p。占位符可配合+、-、#、空格和0进行调整。宽度和精度控制输出格式,例如 %.4g 控制小数精度。Go 没有 `%u`,但无符号整数默认打印为正数。运算符包括逻辑、比较、加减、乘除、移位、按位和按位异或等。
334 1
|
存储 缓存 NoSQL
经验大分享:OHCJava堆外缓存详解与应用
经验大分享:OHCJava堆外缓存详解与应用
374 1