Redis 缓存过期及删除

一、Redis缓存过期策略

物理内存达到上限后,像磁盘空间申请虚拟内存(硬盘与内存的swap),甚至崩溃。

内存与硬盘交换 (swap) 虚拟内存,频繁I0 性能急剧下降,会造成redis内存急剧下降; 

一般设置物理内存的3/4,在redis.conf中

maxmemory 1024mb

 二、过期时间

        2.1 数据结构原理

        声明数据expires来存储过期时间,redis使用c语言开发,dict是字典,存储key-value结构,类似于map

1、dict 用来维护一个Redis 数据库中包含的所有 Key-Value 键值对。
2、expires则用于维护一个 Redis 数据库中设置了失效时间的键(即key与失效时间的映射)。
3、执行过程:当我们使用 expire命令设置一个key的失效时间时,Redis 首先到dict这个字典表中查找要设置的key是否存在,如果存在就将这个key和失效时间添加到expires这个字典表
当我们使用 setex命令向系统插入数据时,Redis 首先将 Key 和 Value 添加到dict这个字典表中,然后将Key和失效时间添加到expires这个字典表中。
4、设置了失效时间的key和具体的失效时间全部都维护在expires这个字典表中。

2.2 设置超时时间

设置超时时间:
set name:2 111 PX 3000

三、过期key的删除策略

3.1 惰性删除

        在key被访问时如果发现它已经失效,那么就删除它,调用expirelfNeeded函数,该函数的意义是: 读取数据之前先检查一下它有没有失效,如果失效了就删除它。

 

 3.2 主动删除

3.2.1 删除策略介绍

 触发时机:当内存超过maxmemory限定时,触发主动清理策略,该策略由启动参数的配置决定。

  策略种类:主动删除策略LRU,LFU,random,ttl,noenviction。

        在redis.conf文件中可以配置主动删除策略,默认是no-enviction (不删除)

maxmemory-policy alTkeys-Tru

3.2.2 LRU

        LRU(Least recently used)最近最少使用(类似java的linkedHashMap),删除不经常被访问的数据。最常见的实现是使用一个链表保存缓存数据,详细算法实现如下:
1.新数据插入到链表头部;
2.每当缓存命中 (即缓存数据被访问) ,则将数据移到链表头部
3.当链表满的时候,将链表尾部的数据丢弃。 

3.2.3 LFU

从已设置过期时间的数据集挑选使用频率最低的数据淘汰。

3.2.4 ttl

从已设置过期时间的数据集中挑选将要过期的数据淘汰。

3.2.5 volatile-random

从已设置过期时间的数据集中任意选择数据淘汰。

3.2.6 noenviction

Redis 的默认策略。在内存超过阀值后,Redis 不做任何清理工作,然后对所有写操作返回错误,但对读请求正常处理。

3.2.7 可参考连接

面试官,请不要再问我 Redis 的淘汰策略了!_杨同学technotes的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/74661.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【双指针_有效三角形的个数_C++】

题目解析 有效三角形的个数 判断三角形:任意两边之和大于第三边 需要重复计算: 知识点 1、需要判断三次: 2、只需要判断一次 已经知道这三个数的大小(先进行排序) 只需要判断 较小的两个数之和 是否 大于最大的…

考研408 | 【计算机网络】 传输层

导图 传输层的功能 传输层的两个协议 传输层的寻址与端口 UDP协议 UDP的主要特点 UDP首部格式: UDP校验: TCP协议 TCP协议的特点 TCP报文段首部格式 TCP连接管理 TCP的连接建立 SYN洪泛攻击 TCP的连接释放 TCP可靠传输 序号: 确认&#xff1…

支持M1 Syncovery for mac 文件备份同步工具

Syncovery for Mac 是一款功能强大、易于使用的文件备份和同步软件,适用于需要备份和同步数据的个人用户和企业用户。Syncovery 提供了一个直观的用户界面,使用户可以轻松设置备份和同步任务。用户可以选择备份的文件类型、备份目录、备份频率等&#xf…

ArcGIS Pro暨基础入门、制图、空间分析、影像分析、三维建模、空间统计分析与建模、python融合、案例应用

GIS是利用电子计算机及其外部设备,采集、存储、分析和描述整个或部分地球表面与空间信息系统。简单地讲,它是在一定的地域内,将地理空间信息和 一些与该地域地理信息相关的属性信息结合起来,达到对地理和属性信息的综合管理。GIS的…

大数据大屏的分析

今天又进行了大屏的训练,就是很多的报表头是最难的,因为确定了头,就确定了大屏的风格了。 今天的还是有点丑但是也是学习了。报班报班~~~~

抖音小程序开发,收银台支付回调通知

大家好,我是小悟 关于抖音小程序收银台支付,可阅读【抖音小程序开发,唤起收银台,包括抖音支付、支付宝支付、微信支付】。 做支付功能最重要的一步就是异步回调通知,所谓回调通知就是唤起收银台支付,支付…

C++:模拟实现list及迭代器类模板优化方法

文章目录 迭代器模拟实现 本篇模拟实现简单的list和一些其他注意的点 迭代器 如下所示是利用拷贝构造将一个链表中的数据挪动到另外一个链表中&#xff0c;构造两个相同的链表 list(const list<T>& lt) {emptyinit();for (auto e : lt){push_back(e);} }void test_…

CSS练习

CSS练习 工具代码运行结果 工具 HBuilder X 代码 <!DOCTYPE html> <!-- 做一个表格&#xff0c;6行4列实现隔行换色&#xff08;背景色&#xff09;并且第3列文字红色第一个单元格文字大小30px。最后一个单元格文字加粗--> <html><head><meta ch…

android app控制ros机器人五(百度地图)

半吊子改安卓&#xff0c;新增了标签页&#xff0c;此标签页需要显示百度地图 按照官方教程注册信息&#xff0c;得到访问应用AK&#xff0c;步骤也可以参照下面csdn Android地图SDK | 百度地图API SDK 【Android】实现百度地图显示_宾有为的博客-CSDN博客 本人使用的是aar开…

【深度学习】NLP中的对抗训练

在NLP中&#xff0c;对抗训练往往都是针对嵌入层&#xff08;包括词嵌入&#xff0c;位置嵌入&#xff0c;segment嵌入等等&#xff09;开展的&#xff0c;思想很简单&#xff0c;即针对嵌入层添加干扰&#xff0c;从而提高模型的鲁棒性和泛化能力&#xff0c;下面结合具体代码…

基于Spring Boot的高校在线考试系统的设计与实现(Java+spring boot+VUE+MySQL)

获取源码或者论文请私信博主 演示视频&#xff1a; 基于Spring Boot的高校在线考试系统的设计与实现&#xff08;Javaspring bootVUEMySQL&#xff09; 使用技术&#xff1a; 前端&#xff1a;html css javascript jQuery ajax thymeleaf 微信小程序 后端&#xff1a;Java s…

vue或uniapp使用pdf.js预览

一、先下载稳定版的pdf.js&#xff0c;可以去官网下载 官网下载地址 或 pdf.js包下载(已配置好&#xff0c;无需修改) 二、下载好的pdf.js文件放在public下静态文件里&#xff0c; uniapp是放在 static下静态文件里 三、使用方式 1. vue项目 注意路径 :src"static/pd…

Windows CMD 关闭,启动程序

Windows CMD 关闭&#xff0c;启动程序 1. Windows 通过 CMD 命令行关闭程序 示例&#xff1a;通过 taskkill 命令关闭 QQ 管家&#xff0c;但是这里有个问题&#xff0c;使用命令行关闭 QQ 管家时&#xff0c;会提示“错误: 无法终止 PID 1400 (属于 PID 22116 子进程)的进程…

wps设置一键标题字体和大小

参考 wps设置一键标题字体和大小&#xff1a;https://www.kafan.cn/A/7v5le1op3g.html 统一一键设置

echarts-convert.js使用

echarts-convert.js demo 点击下载 1、本地安装phantom.js插件 点击下载 2、更改文件路径 &#xff08;D:\phantomjs-2.1.1-windows\bin&#xff09;改为本地项目文件路径 3、打开cmd命令行&#xff0c;并格式化语言 运行以下命令 将命令行语言改为中文简体 chcp 65001…

【Rust】Rust学习 第九章错误处理

Rust 将错误组合成两个主要类别&#xff1a;可恢复错误&#xff08;recoverable&#xff09;和 不可恢复错误&#xff08;unrecoverable&#xff09;。可恢复错误通常代表向用户报告错误和重试操作是合理的情况&#xff0c;比如未找到文件。不可恢复错误通常是 bug 的同义词&am…

使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1) - GUI Guider简介及安装

使用GUI Guider工具在MCU上开发嵌入式GUI应用 (1) - GUI Guider简介及安装 受限于每篇文章最多只能贴9张图的限制&#xff0c;这个教程被拆分成了多篇文章连载发布&#xff0c;完整目录结构如下图x所示。后续会发布完整教程的pdf文件&#xff0c;敬请期待。 图x 完整教程文档…

Linux 基础(五)常用命令-文件属性

文件属性 文件权限文件属性修改文件权限属性 文件所有者 文件权限 文件属性 Linux中文件权限 可以通过文件属性体现&#xff1b; 使用 ll 查看文件列表 最前面的 l d 表示文件类型 1 5 表示硬链接数 或者 子文件夹个数 所属用户 所属用户组 文件大小 创建/更新时间 文件&…

ComponentOne Studio ASP.NET MVC Crack

ComponentOne Studio ASP.NET MVC Crack FlexReport增强功能 添加了对在Microsoft Windows上部署Microsoft Azure的支持。 添加了对显示嵌入字体的支持。 .NET标准版的经典C1PDF(Beta版) GrapeCity的经典C1Pdf库现在提供了基于Microsoft.NET标准的版本。在任何.NET应用程序(包括…

numba 入门示例

一维向量求和&#xff1a; C A B 在有nv 近几年gpu的ubuntu 机器上&#xff0c; 环境预备&#xff1a; conda create -name numba_cuda_python3.10 python3.10 conda activate numba_cuda_python3.10conda install numba conda install cudatoolkit conda install -c nvi…