当前位置: 首页 > article >正文

redis--过期策略和内存淘汰策略

redis过期策略

1、惰性删除

      当客户端尝试访问某个键时,Redis会先检查该键是否设置了过期时间,并判断是否过期。

        如果键已过期,则Redis会立即将其删除。这就是惰性删除。

总结:该策略可以最大化的节省CPU资源,却对内存非常的不友好,极端情况下可能出现大量的过期的key没有再次被访问,从而不会被清除,占用大量的内存。

2、定期删除

     redis会每隔一段时间(默认100毫秒) 随机检查一部分设置了过期时间的键。

        定期过期策略通过使用循环遍历的方式,逐个检查键是否过期,并删除已过期的键值对

  

  总结:通过调整定时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使的CPU和内存资源达到最优的平衡效果

实际的流程

        Redis中同时使用了惰性删除定期删除的这两种过期策略

        假设Redis当前存放20万个key,并且都设置了过期时间,如果你每隔100ms就去检查这全部的key,CPU负载会特别高,最后可能会挂掉。

        因此redis采取的是定期删除,每隔100ms就随机抽取一定数量的key来检查和删除的 。

        但是呢,最后可能会有很多已经过期的key没有被删除,这时候,redis采用惰性删除。在你获取某个key的时候,redis会检查一下,这个key如果设置了过期时间并且已经过期了,此时就会删除。

 

        总结:需要注意如果定期删除漏掉了很多过期的key,然后也没走惰性删除,就会有很多过期key积在内存中,可能会导致内存溢出,或者是业务量太大,内存不够用然后溢出了,为了应对这个问题,redis引入了内存淘汰策略进行优化。

redis内存淘汰策略

前言

        以下介绍redis的6中内存淘汰策略,内存淘汰策略允许Redis在内存资源紧张时,根据一定的策略主动删除一些键值对,以释放内存空间并保持系统的稳定性

1、noeviction(不淘汰策略)

        当内存不足以容纳新写入数据时,Redis将新写入的命令返回错误,这个策略确保数据的完整性,但会导致写入操作失败。

2、volatile-lru(最近最少使用)

      从设置了过期时间的键中选择最少使用的键进行删除,该策略优先删除最久未被访问的键,保留最常用的键。

3、volatile-ttl(根据过期时间优先)

      从设置了过期事假的键中选择剩余圣剑最短的键进行删除。该策略优先删除剩余时间较短的键,以保留剩余时间更长的键

4、volatile-random(随机删除)

     从设置了过期时间的键中随机选择一个键进行删除

5、allkeys-lru(全局最近最少使用)

      从所有键中选择最少使用的键进行删除,无论键是否设置了过期时间,都将参与淘汰

6、allkeys-random(全局随机删除)

      从所有键中随机选择一个键进行删除


http://www.kler.cn/news/353331.html

相关文章:

  • 数据结构——广义表
  • 26备战秋招day11——基于CoNLL-2003的bert序列标注
  • MySQL中localhost和127.0.0.1的区别
  • web基础+PhpStrom+JS+CSS+html
  • Flutter Container容器组件实战案例
  • 西安周边环境最好的楼宇(园区)
  • 灵当CRM index.php 任意文件上传漏洞复现
  • 我也要!赚钱是分层的:这就是你又累又穷的原因——早读(逆天打工人爬取热门微信文章解读)
  • 小猿口算炸鱼脚本
  • Python爬虫中的多线程技术:提升数据采集效率
  • 利用FnOS搭建虚拟云桌面,并搭建前端开发环境(一)
  • Free RTOS实时操作系统
  • 随机掉落的项目足迹:修改组件库默认样式
  • 视频网站开发:Spring Boot框架的高效实现
  • VRRP
  • 【C语言】结构体应用:学生成绩排名
  • Windows端口被占用如何使用Powershell命令关闭
  • 深度学习 %matplotlib inline
  • js chrome devtools 调试技巧
  • 数据治理(2)-数据标准
  • 网站集群批量管理-Ansible-进阶
  • Android/鸿蒙应用的资源配置技巧
  • 无人机驾驭技术:激光雷达非接触式测量!
  • 深入理解Go语言的栈
  • 笔记-Python爬虫技术基础及爬取百度新闻
  • 【人工智能-初级】第4章 用Python实现逻辑回归:从数据到模型