Redis删除策略和淘汰策略[通俗易懂]

Redis删除策略和淘汰策略[通俗易懂]来的问题,Redis引入了定期删除策略(是他们的一个比较折中的方案)周期性轮询Redis库中的时效性数据,采取随机抽取的策略,利用过期数据占比的方式控制删除频度。实际上,在前面所说的删除策略,它针对的是expire命令进行的操作,也就是说那些具有时效性的数据(已经过期,并且还在占用内存的数据),我们在这里说的是针对那些并没有过期,或者是内存中的数据没有一个带有有效期,全是永久性数据,这时候删除策略就不起作用了,所以这个时候内存满了我们再去插入数据到内存是怎么做?删除这批key中已过期的。……

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Redis删除策略和淘汰策略[通俗易懂]
1.删除策略
        Redis 是一种内存级数据库,数据都存在内存中,但是针对于已经过期的数据,reids 不
会立刻删除只是会存储在 expires 中,当执行删除策略的时候,才会从 expires 中寻找对应的数据存储的地址,在存储空间中找到对应的数据进行删除。数据删除其实就是内存和 CPU 占用之间寻找平衡,CPU 才能去处理事情,针对过期数据,要进行删除的时候,一般有三种策略
1.1 定时删除
         顾名思义,当 key 设置有过期时间,时间到了,定时器任务立即执行删除,相当于消
耗 CPU 来减少内存使用,拿时间换空间。

优点:节约内存,到时就删除,快速释放掉不必要的内存占用
缺点:CPU 压力大,无论 CPU 此时负载量多高,都会去占用 CPU 进行 key 的删除
操作,会影响 Redis 服务器响应时间和吞吐量,是一种比较低效的方式
结论:用 CPU 性能换取内存空间,时间换空间

 

1.2 惰性删除
        就是说,数据到达过期时间的时候,先不做处理,等到下次访问数据的时候,进行访问,
如未过期,返回数据,如过期,则删除。这就相当于节约了 CPU 但占用了内存,拿空间换
时间。
优点:不占用 CPU 节约 CPU 性能,只在获取访问 key 的时候才判断是否过期,过期
则删除,只会删除当前获取的这一个 key,其他的 key 还是保持原样
缺点:内存占用大,如果一直没有获取它,那么数据就会长期占用内存空间,当有大量
的 key 没有被使用到,也造成了大量内存浪费,对内存数据库来说,也不太友好
结论:空间换时间

1.3 定期删除
        前面说的两种方案 1.时间换空间,2.空间换时间都是两个极端方法,为避免前面方案带
来的问题,Redis 引入了定期删除策略(是他们的一个比较折中的方案)周期性轮询 Redis 库中的时效性数据,采取随机抽取的策略,利用过期数据占比的方式控制删除频度。在 Redis 服务器初始化时,读取 server.hz 的值,默认值为 10。定时轮询服务器,每秒钟执行 server.hz 次 serverCron() 函数。databaseCron() 在后台轮询处理 16 个 redis 数据库的操作,如这里的过期key 的处理activeExpireCycle(),对每个数据库的 expire 空间进行检测,每次执行250ms/server.hz
 随机选取一批 expire 空间的 key(redis 有 16 个数据库,从 0 号数据库开始—15号数据库)
 删除这批 key 中已过期的。如果这批 key 中已过期的占比超过 25%,那么再重复执行步骤一。(循环到小于 25%结束当前数据库的删除)如果这批 key 中已过期的占比 ≤ 25%,检测下一个数据库的 expire 空间(current_db++) 用 info 命令查看相关配置参数

Redis删除策略和淘汰策略[通俗易懂]
每秒钟执行 hz 次 serverCron(),对服务器进行定时轮询
1.4 策略对比
1︰定时删除:
        节约内存,无占用,
        不分时段占用 CPU 资源,
        频度高,拿时间换空间
2:惰性删除:
        内存占用严重
        延时执行,
        CPU 利用率高拿空间换时间
3:定期删除:
        内存定期随机清理
        每秒花费固定的 CPU 资源维护内存
        随机抽查,重点抽查

2 淘汰/逐出策略
在 Redis 中经常会进行数据的增删查改操作,那么如果在添加数据的时候遇到了内存不足,该怎么办?在前面用的删除策略可以避免出现这种情况吗?
实际上,在前面所说的删除策略,它针对的是 expire 命令进行的操作,也就是说那些具有时效性的数据(已经过期,并且还在占用内存的数据),我们在这里说的是针对那些并没有过期,或者是内存中的数据没有一个带有有效期,全是永久性数据,这时候删除策略就不起作用了,所以这个时候内存满了我们再去插入数据到内存是怎么做?
redis 执行命令之前,都会用 freeMemoryIfNeeded()方法,检测这次内存是否充足,如果不满足加入新数据,则会执行淘汰策略(淘汰未过期的数据)
2.1 配置文件

Redis删除策略和淘汰策略[通俗易懂]
2.2 分类
        检测带有时效性的数据进行淘汰(一般是有定时,会过期的数据的)
                 volatile-lru:挑选最近最少使用的数据淘汰
                 volatile-lfu:挑选最近使用次数最少的数据淘汰
                 volatile-ttl:挑选将要过期的数据淘汰
                 volatile-random:任意选择数据淘汰
        检测全库的数据进行淘汰
                 allkeys-lru:挑选最近最少使用的数据淘汰
                 allkeLyRs-lfu::挑选最近使用次数最少的数据淘汰
                 allkeys-random:任意选择数据淘汰,相当于随机

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179188.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • origin画图标注_origin图线上的特殊符号怎么弄

    origin画图标注_origin图线上的特殊符号怎么弄Origin画图标签常见语法下标:-(x)上标:+(x)斜体:\i(x)加粗:\b(x)x下标y上标:=(x,y)

    2022年9月21日
    2
  • 二进制表示小数「建议收藏」

    二进制表示小数「建议收藏」二进制表示小数二进制表示小数TableofContents1.题目2.方法3.思路1题目给定一个数将其转换为二进制(均用字符串表示),如果这个数的小数部分不能在32个字符之内来精确地表

    2022年8月4日
    5
  • Spring AOP 切面@Around注解的具体使用

    Spring AOP 切面@Around注解的具体使用@Around注解可以用来在调用一个具体方法前和调用后来完成一些具体的任务。比如我们想在执行controller中方法前打印出请求参数,并在方法执行结束后来打印出响应值,这个时候,我们就可以借助于@Around注解来实现;再比如我们想在执行方法时动态修改参数值等类似功能的注解还有@Before等等,用到了SpringAOP切面思想,SpringAOP常用于拦截器、事务、日志、权限验…

    2022年7月15日
    40
  • 竣达技术丨设备云监控管理平台[通俗易懂]

    竣达技术丨设备云监控管理平台[通俗易懂]竣达技术丨设备云监控管理平台是用于集中式管理和查看远程监控设备的运行状态,用户可先关注平台微信公众号,再扫码关注对应设备,就可以随时随地的查看设备的运行状态,并能及时接收微信推送的设备告警信息,满足物联网、无人值守、远程监控需求的集中管理平台。

    2022年7月25日
    10
  • unity3d实战_unity3d游戏制作

    unity3d实战_unity3d游戏制作[Unity3D入门]分享一个自制的入门级游戏项目"坦克狙击手"我在学Unity3D,TankSniper(坦克狙击手)这个项目是用来练手的。游戏玩法来自这里(http://www.4399.com/flash/127672_3.htm),虽然抄袭了人家的创意,不过我只用来练习(目前还很不成熟,离人家的境界相差很大),坦克、导弹、建筑模型来自网络,应该不会有版权问题吧。由于模型和代码总共…

    2022年8月10日
    7
  • Hall 传感器接口,PWM 协议,AK 协议,SENT协议

    Hall 传感器接口,PWM 协议,AK 协议,SENT协议REFREF:RL9396-AutomotiveMultiplePowerSupplyIC-STMicroelectronicsL9396-AutomotiveMultiplePowerSupplyIC,L9396,STMicroelectronicshttps://www.st.com/en/automotive-analog-and-power/l9396.htmlMicrosoftWord-CY320_Product_Info_2007-04.doc.

    2022年6月20日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号