【Redis】关于过期数据清除的一些策略
这里要讨论的为过期的数据是如何被清除的,也就是网上常常讨论的过期清除策略。
需要注意的是,redis除了会对过期的数据进行淘汰,也可以通过对内存大小进行限制,并对超出内存限制后进行数据淘汰。此时淘汰的数据未必是过期的,只是因为内存达到限制而被淘汰。需要注意一下两者的区别,数据淘汰算法包括LRU、LFU等。
好,回归过期数据清除策略这里。redis的数据清除策略包括2种。惰性清除和定期清除。
惰性清除很简单,redis会在用户访问数据时,如果发现数据是过期的,那么就删除这个数据,并且给用户返回相应的结果。那么redis是如何发现这个数据是过期的呢?我们知道redis默认有16个库,0~15号库,每一个库对应源码中的一个db结构体,db中有一个dict类型成员变量expire,dict,即字典,也就是哈希表,是redis底层数据结构中的一种,expire哈希表中存储的键值对,key为键,value为其对应的过期时间,expire中存储了该库中所有键的过期时间。
那么定期清除呢?我们先贴上一段redis配置文件中的文字。
# Redis reclaims expired keys in two ways: upon access when those keys are
# found to be expired, and also in background, in what is called the
# "active expire key". The key space is slowly and interactively scanned
# looking for expired keys to reclaim, so that it is possible to free memory
# of keys that are expired and will never be accessed again in a short time.
#
(redis通过2种方法清除过期键:在操作时发现这些key是过期的,还有也是通过后台清除的,被称作'定期清除key'。key空间被缓慢的、交互式的清除过期键,所以它可能会清除过期的key来释放内存,并且短时间不会被再次访问)# The default effort of the expire cycle will try to avoid having more than
# ten percent of expired keys still in memory, and will try to avoid consuming
# more than 25% of total memory and to add latency to the system. However
# it is possible to increase the expire "effort" that is normally set to
# "1", to a greater value, up to the value "10". At its maximum value the
# system will use more CPU, longer cycles (and technically may introduce
# more latency), and will tolerate less already expired keys still present
# in the system. It's a tradeoff between memory, CPU and latency.
#
(清除循环作为一种默认的尝试,会尝试避免在内存中存在超过10%的过期Key,并且避免(过期key占用的内存)超过总内存的25%,最终将内存归还系统。它可以增加这种清除的尝试,通常它会被设置为1,到一个更大的值,最大可以达到10。它的最大值意味着系统会使用更的的cpu资源,更久的循环时间(理论上可能会导致延迟),并且容忍更少的现在存在于系统中的过期的key。它是一种在内存、CPU、延迟之间的一种平衡和折衷)
# active-expire-effort 1
也就是说redis定期清除会主动的进行清除。active-expire-effort控制了每次循环的时间有多长。清除达标的条件为避免在内存中存在超过10%的过期Key,并且避免(过期key占用的内存)超过总内存的25%。不达标的话会继续循环清除,直到达标为止。
另外一个参数hz控制了诸如清除循环、关闭超时客户端等后台任务的频率。综合控制了定期清除的行为。
hz相关注释如下:
# Redis calls an internal function to perform many background tasks, like
# closing connections of clients in timeout, purging expired keys that are
# never requested, and so forth.
#
# Not all tasks are performed with the same frequency, but Redis checks for
# tasks to perform according to the specified "hz" value.
#
# By default "hz" is set to 10. Raising the value will use more CPU when
# Redis is idle, but at the same time will make Redis more responsive when
# there are many keys expiring at the same time, and timeouts may be
# handled with more precision.
#
# The range is between 1 and 500, however a value over 100 is usually not
# a good idea. Most users should use the default of 10 and raise this up to
# 100 only in environments where very low latency is required.
hz 10
参考文章:
[1],Redis(6)删除策略(定时删除、惰性删除、定期删除)和数据逐出策略
相关文章:
【Redis】关于过期数据清除的一些策略
这里要讨论的为过期的数据是如何被清除的,也就是网上常常讨论的过期清除策略。 需要注意的是,redis除了会对过期的数据进行淘汰,也可以通过对内存大小进行限制,并对超出内存限制后进行数据淘汰。此时淘汰的数据未必是过期的&…...
动态SQL
Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能,它存在的意义是为了解决拼接SQL语句字符串时的痛点问题。 1、if if标签可通过test属性的表达式进行判断,若表达式的结果为true,则标签中的内容会执行;反之标签…...

uniapp:OCR识别身份证上传原图失败,问题解决
1、上传普通图片成功 2、上传>4M | >5M图片失败检查:1、uni.uploadFile自身没有文件大小限制。然而,这仍然取决于你的应用程序所在的平台和存储空间容量。 2、上传照片后不在fail,在sucess 提交照片-3 {"data": "<h…...
shell循环和函数
目录 1.for循环2.while循环3.until循环4.函数 1.for循环 for循环是固定循环,也就是在循环时就已经知道需要进行几次的循环,有事也把for循环成为计数循环。for的语法如下两种: 语法一 for 变量 in 值1 值2 值3 …(可以是一个文件等)do程序do…...
京东详情api
简要描述 根据商品id获取详情数据 请求URL http://xxx.xxx.xxx.xxx:xxxx/jd.get.item 请求方式 get 请求Query参数 参数名示例值必选类型说明itemid100016034386是string商品idtokenadmin.api是string权限token 成功返回示例 部分数据展示: {"data&qu…...

MySQL最新版8.1.0安装配置教程
目录 目录 前言 安装流程图 1,MySQL数据库是什么? 2,下载zip压缩包 3,解压到要安装的目录 4,添加环境变量 4.1,找到环境变量 4.2,进行环境变量的添加 5.新建mysql 配置文件 6、安装mysql服务 7、初始化数据文件 8、启动mysql …...
5G试题_1
1、 全息技术属于对5G三大类应用场景网络需求中的哪一种?(A) A. 增强移动宽带 B. 海量大连接 C. 低时延高可靠 D. 低时延大带宽 2、 在5G时代,不同领域的不同设备大量接入网络,其实引用传统的组网方式和服务提供形式也…...

正规股票配资网站的三个明显特点分析
随着股票市场的快速发展,越来越多的投资者开始考虑使用股票配资来增加自己的资金流动性和收益率。然而,在选择股票配资网站时,投资者往往难以辨别哪些网站是正规的,哪些网站存在风险。因此,以下将分析正规股票配资网站…...

质疑苹果5G信号造假成为闹剧,反而将运营商置于尴尬境地
在iPhone15发布会处于热点之际,一位号称通信专家的人士指责iPhone的5G信号造假,一度闹得沸沸扬扬,导致舆论一开始都是质疑苹果造假,然而在知乎却有更多专业人士指出这位专家不了解5G技术,这个问题或许反而出在运营商身…...
vue 预览zip
ZIP的数据从接口传递数据流过来。解析数据流,并将zip的目录绑定到tree中。 1.引入插件jszip: yarn add jszip 2.在需要引用的页面引用: import JSZip from jszip 3. 实现代码 api(option).then((res)>{ // 接口获取zip的数据流 l…...
人先自辱,而后人辱之
语出《孟 子.离娄上》“夫人必自街,而后人懈之;家必自毁,而后人毁之"。 自己不把自己当人看,别人肯定也不会。善待自己,接纳自己。 过去的不再留恋。 心平气和,气定神闲。 政治论述题,每一个题目&a…...

web端三维重建算法-colmap++
vismap vismap 是colmap 版本 (1) 支持superpoint superglue (2) 支持netvlad 图像检索 (3)支持特征点尺度定权 (4)支持二维码定位 (5)支持融合gps &#x…...

MyBatisPlus(二)基础Mapperr接口:增删改查
MyBatisPlus:基础Mapper接口:增删改查 插入一条数据 代码 Testpublic void insert() {User user new User();user.setId(6L);user.setName("张三");user.setAge(25);user.setEmail("zhangsanexample.com");userMapper.insert(use…...
基础项目实用案例
文章目录 倒计时动态生成表格发布留言密码框验证模态框拖拽 倒计时 function countDown(time) {var nowTime new Date();var inputTime new Date(time);var times (inputTime - nowTime) / 1000;var d parseInt(times / 60 / 60 / 24);d d < 10 ? 0 d : d;var h par…...
sprngboot整合kabana
Spring Boot是一个开源框架,可以基于Spring框架快速开发和构建生产级别的应用程序。Kibana是一个可视化和交互式分析平台,用于检索和分析Elasticsearch集群中存储的数据。 下面是Spring Boot整合Kibana的基本步骤: 添加Maven依赖 在pom.xm…...

PostgreSQL 数据备份恢复
文章目录 PostgreSQL 备份方式SQL备份(逻辑备份)文件系统备份(物理备份)归档备份(物理备份) 逻辑备份&恢复物理备份&恢复(全量)备份恢复 物理备份&恢复(某个…...

线性代数的本质(七)——特征值和特征向量
特征值和特征向量 本章特征值和特征向量的概念只在方阵的范畴内探讨。 相似矩阵 Grant:线性变换对应的矩阵依赖于所选择的基。 一般情况下,同一个线性变换在不同基下的矩阵不同。仍然以平面线性变换为例,Grant 选用标准坐标系下的基向量 i…...

c语言进阶部分详解(指针初阶)
大家好!,前段时间一直在准备数学建模竞赛,现在也是忙完了。抓紧继续给大家带来c语言的内容。今天给大家带来指针初阶部分的讲解 当我们谈论C语言中的指针时,实际上是在讨论一种非常重要的概念,因为指针是C语言的核心之…...
Socks5代理IP在跨境电商与网络游戏中的网络安全应用
在数字化时代,跨境电商和网络游戏已成为全球网络世界中的两大热门领域。然而,这两者都面临着相似的网络安全挑战,需要高效的网络代理来解决。本文将讨论Socks5代理IP在跨境电商和网络游戏中的关键作用,以及如何通过这一技术增强网…...

Gin框架---基础综述
目录 一:经典入门案例二:请求参数2.1: API参数2.2: URL参数2.3: 表单参数 三: 响应参数四:数据解析和绑定4.1: JSON数据解析绑定4.2: FROM表单数据解析和绑定 五: 路由组六:异步处理七:中间件7.…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...

ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...

海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...

麒麟系统使用-进行.NET开发
文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的,如果需要进行.NET开发,则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET,所以要进…...