删除策略-逐出策略|学习笔记

简介: 快速学习删除策略-逐出策略

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

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


删除策略-逐出策略

 

目录

逐出算法的应用

,Redis 删除策略总结

 

一,逐出算法的应用

1.新数据进入检测

(1).当新数据进入 redis 如果内存不够时的方法

Redis 使用内存存储数据在执行每一个命令前会调用freeMemoryflNeed() 检测内存是否充足如果内存不满足新加入数据的最低存储要求,redis 要临时删除一些数据当前指令清理存储空间清理数据的策略成为逐出算法

(2).注意点逐出数据的过程不是 100% 能够清理出足够的可使用内存空间如果不成功反复执行当对所有数据尝试完毕后如果不能达到内存清理的要求将出现错误信息错误信息一般表现为(error)OOMcommand not allowed when used memory>’maxmemory’

2.影响数据逐出的相关配置

(1).最大可使用内存

最大可使用内存是 maxmemory,是占用物理内存的比例默认值为0,表示不限制生产环境中根据需求设定通常设置在50%以上

(2).每次选取待删除数据的个数

每次选取待删除数据的个数是 maxmemory-sample。它选取数据时并不会全库扫描导致严重的性能消耗降低读写性能因此采用随机获取数据的方法作为待检测删除数据

(3).删除策略

删除策略是 maxmemory-policy,是达到最大内存后的对被挑选出来的数据进行的策略

(4).检测易失数据可能会过期的数据集 sever.db[i].expires)

①.Volatile-Iru:挑选最近最少使用的数据淘汰

②.Volatile-Ifu:挑选最近使用次数最少的数据淘汰

③.Volatile-ttl:挑选将要过期的数据淘汰

④.Volatile-random:任意选择数据淘汰

此下三张图为老师讲解 Iru Ifu 的策略

image.png

image.png

image.png

(5).检测全库数据所有数据集sever.db[i].dict)

①.Allkeys-Iru:挑选最少使用的数据淘汰

②.Allkeys-Ifu:挑选使用次数最少的数据淘汰

③.Allkeys-random:任意选择数据淘汰

(6).放弃数据驱逐

no-enviction(驱逐):禁止驱逐数据(redis4.0中默认策略),会造成数据的内存泄露会引发错误 OOM(OutOf Memory)

注意建议使用  Volatile-Iru  的策略这些策略可以在配置文件中的 maxmemory-policy volatile-Iru  中写

3.数据逐出策略配置依据

使用 INFO 命令输出监控信息,查询缓存 hit(命中 miss丢失的次数,根据业务需求调优 Redis 配置

以下为与 info 命中次数相关的代码

evicted_keys:0

keyspace_hits:18

keyspace_misses:0 puAsub_channe1s:0

pubsub_patterns:0

Latest_fork_usec:1029

migrate_cached_sockets:0

slave_expires_tracked_keys:0

active_defrag_hits:0

active_defrag_misses:0

active_defrag_key_hits:0

active sefrag_key_misses:0

 

二,Redis 删除策略总结

1.数据删除策略

(1).定时删除定时删除是指规定时间立马操作它更要求内存但是对 cpu 压力过大

(2).惰性删除惰性删除与定期删除相反比较珍惜 cpu,但是对储存空间不太珍惜

(3).定期删除定期删除属于定时删除与惰性删除的折中方法属于随机策略加上重点策略的一个方式

2.数据逐出策略

八种策略

相关文章
Echarts visualMap属性记录
这篇文章是关于ECharts中visualMap属性的详细记录。文中首先定义了visualMap的作用,即进行数据到视觉元素的映射。接着,通过一系列详细的配置参数,如类型、显示控制、数据范围、样式和格式化工具等,介绍了如何配置连续型和分段型visualMap组件。最后,作者通过具体代码示例,说明了如何将这些配置应用于实际的ECharts图表中,以实现数据的视觉编码效果。
1334 0
Echarts visualMap属性记录
|
Java Android开发
Eclipse 代码模板
Eclipse 代码模板
188 3
|
存储 缓存 自然语言处理
Elasticsearch中FST与前缀搜索
Elasticsearch中FST与前缀搜索
380 0
|
搜索推荐 JavaScript Java
Springboot+vue的旅游信息推荐系统设计与实现(有报告)。Javaee项目,springboot vue前后端分离项目。
Springboot+vue的旅游信息推荐系统设计与实现(有报告)。Javaee项目,springboot vue前后端分离项目。
|
消息中间件 存储 SQL
RocketMQ 全链路灰度探索与实践
当链路请求中存在消息的时候,如何实现全链路灰度?一起来看看消息灰度的设计与实现吧!
841 0
RocketMQ 全链路灰度探索与实践
|
存储 运维 监控
十年磨一剑:蚂蚁集团可观测性平台 AntMonitor 揭秘
蚂蚁集团的业务种类繁多,兼具金融级的“稳” 和互联网的 “快”,支撑又快又稳的业务发展需要完善的稳定性保障体系, 这个体系的基石就是可观测性平台-AntMonitor 。 早在2011年前,监控平台就已经完成初代建设,在2012到2017年这五年间,蚂蚁监控技术团队抽象出了业务视角监控牵引的模式,大大提升了核心业务的故障发现能力,同期研发了可视化引擎与易用的配置系统。为了支撑双11等大规模海量计算场景,在底层数据技术上做到了实时稳定的大规模日志和指标处理能力。随着这些能力的完成,可观测平台的产品也逐渐成熟。
|
Unix Shell Linux
Linux 性能测试工具UnixBench(转载)
转载:http://blog.csdn.net/gatieme/article/details/50912910 UnixBench unixbench是一个用于测试unix系统性能的工具,也是一个比较通用的benchmark, 此测试的目的是对类Unix 系统提供一个基本的性能指示,很多测试用于系统性能的不同方面,这些测试的结果是一个指数值(index value,如520),这个值是测试系统的测试结果与一个基线系统测试结果比较得到的指数值,这样比原始值更容易得到参考价值,测试集合里面所有的测试得到的指数值结合起来得到整个系统的指数值。
3217 0
|
3天前
|
数据采集 人工智能 安全
|
12天前
|
云安全 监控 安全