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博客

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C/C++】STL queue 非线程安全接口,危险!

STL 中的 queue 是非线程安全的,一个组合操作:front(); pop() 先读取队首元素然后删除队首元素,若是有多个线程执行这个组合操作的话,可能会发生执行序列交替执行,导致一些意想不到的行为。因此需要重新设计线程安全的…

每天一道leetcode:剑指 Offer 13. 机器人的运动范围(中等广度优先遍历剪枝)

今日份题目: 地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0]的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之…

jmeter返回值中的中文显示为????问号处理解决方案

jmeter返回值中的中文显示为????问号 查找解决方案时,发现了以下两种解决方案: 一、1.打开jmter配置文件bin/jmeter.properties 2.修改配置文件,查找“sampleresult.default.encoding”将其改为utf8,注意要去掉“#”号 sample…

opencv带GStreamer之Windows编译

目录 1、下载GStreamer和安装2. GSTReamer CMake配置3. 验证是否配置成功 1、下载GStreamer和安装 下载地址如下: gstreamer-1.0-msvc-x86_64-1.18.2.msi gstreamer-1.0-devel-msvc-x86_64-1.18.2.msi 安装目录无要求,主要是安装完设置环境变量 xxx\1…

CVPR 2023 | 用户可控的条件图像到视频生成方法(基于Diffusion)

注1:本文系“计算机视觉/三维重建论文速递”系列之一,致力于简洁清晰完整地介绍、解读计算机视觉,特别是三维重建领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; CVPR, ICCV, ECCV, NeurIPS, ICLR, ICML, TPAMI, IJCV 等)。 本次介绍的论…

S7-200 Smart 的多种端口及通讯方式

每个S7-200 SMART CPU都提供一个以太网端口和一个RS485端口(端口0),标准型CPU额外支持SB CM01信号板(端口1),信号板可通过STEP 7-Micro/WIN SMART软件组态为RS232通信端口或RS485通信端口。 CPU 通信端口引脚分配 1.S7-200 SMART CPU 集成的 RS485 通信…

见证马斯克的钞能力,AI.com再次易主,OpenAI投掷1100万美金购买AI.com刚满五个月

我们又一次见证了马斯克的钞能力。上次是去年他用440亿美元买下推特。 高价值的AI.com域名在2021年易主后,闲置过一段时间,今年2月份突然重定向到ChatGPT。 对于ChatGPT用户来说,每次访问都要在浏览器里敲这些字符:https://chat.o…

实践-CNN卷积层

实践-CNN卷积层 1 卷积层构造2 整体流程3 BatchNormalization效果4 参数对比5 测试效果 1 卷积层构造 2 整体流程 根据网络结构来写就可以了。 池化 拉平 训练一个网络需要2-3天的时间。用经典网络来,一些细节没有必要去扣。 损失函数: fit模型&…

checkbox post参数接收

checkbox 定义 <div class"check-box"> <label for"ck1">batchInsert:</label><input type"checkbox" id"ck1" checkedname"ckFn" value"batchInsert" > </div> <div class&qu…

QGIS3.28的二次开发五:VS使用QT插件创建UI界面

前面我们说了在创建项目时创建的是一个空项目&#xff0c;即不使用 Qt 提供的综合开发套件 Qt Creator&#xff0c;也不使用 Qt Visual Studio Tools 这类工具。 但是后面发现&#xff0c;如果我想要有更加满意的界面布局&#xff0c;还是要自己写一个UI文件&#xff0c;如果不…

Word(1):文章页码设置

1.需求 在文档的封皮页不设置页码&#xff0c;在目录页页码设置为罗马数字&#xff0c;在正文使用阿拉伯数字。 2.解决方法 step1&#xff1a; 在封皮页的最后&#xff0c;点击”插入“-分隔符-分节符&#xff08;下一页&#xff09; step2&#xff1a;在目录页的最后&…

Python学习笔记_基础篇(二)_数据类型之字符串

一.基本数据类型 整数&#xff1a;int 字符串&#xff1a;str(注&#xff1a;\t等于一个tab键) 布尔值&#xff1a; bool 列表&#xff1a;list 列表用[] 元祖&#xff1a;tuple 元祖用&#xff08;&#xff09; 字典&#xff1a;dict 注&#xff1a;所有的数据类型都存在想对应…

Python Opencv实践 - 图像放射变换

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) rows,cols img.shape[:2] print(img.shape[:2])#使用getAffineTransform来获得仿射变换的矩阵M #cv.getAffineTransform(…

[JavaScript游戏开发] 绘制Q版地图、键盘上下左右地图场景切换

系列文章目录 第一章 2D二维地图绘制、人物移动、障碍检测 第二章 跟随人物二维动态地图绘制、自动寻径、小地图显示(人物红点显示) 第三章 绘制冰宫宝藏地图、人物鼠标点击移动、障碍检测 第四章 绘制Q版地图、键盘上下左右地图场景切换 文章目录 系列文章目录前言一、本章节…

企业直播MR虚拟直播(MR混合现实直播技术)视频介绍

到底什么是企业直播MR虚拟直播&#xff08;MR混合现实直播技术&#xff09;&#xff1f; 企业直播MR虚拟直播新玩法&#xff08;MR混合现实直播技术&#xff09; 我的文章推荐&#xff1a; [视频图文] 线上研讨会是什么&#xff0c;企业对内对外培训可以用线上研讨会吗&#x…

Nginx网站服务(安装nginx、平滑升级nginx、nginx各种访问配置)

一、Nginx概述 1、什么是nginx&#xff1f; 稳定性高、系统资源消耗低、对HTTP并发连接的处理能力高&#xff08;单台物理器可支持30000-50000个并发请求&#xff09; NG并发连接能力有2个因素的影响 ①CPU的个数 ②本地吴立琪系统的最大文件打开数2、Nginx应用场景 静态服…

pwm接喇叭搞整点报时[keyestudio的8002模块]

虽然现在查看时间很方便&#xff0c;但是其实好像我的时间观念却越来越差。于是决定搞一个整点报时&#xff0c;时常提醒自己时光飞逝&#xff0c;不要老是瞎墨迹。 这篇主要讲一下拼装方式和配置&#xff0c;就差不多了。不涉及什么代码。3针的元器件&#xff0c;去掉正负接线…

html css实现爱心

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>/* 爱心 */.lo…

机器学习算法之-逻辑回归(1)

什么是回归 回归树&#xff0c;随机森林的回归&#xff0c;无一例外他们都是区别于分类算法们&#xff0c;用来处理和预测连续型标签的算法。然而逻辑回归&#xff0c;是一种名为“回归”的线性分类器&#xff0c;其本质是由线性回归变化而来的&#xff0c;一种广泛使用于分类问…

在P4(Perforce)中使用TortoiseMerge来比较合并

一直习惯于svn的比较合并工具&#xff0c;会觉得p4自带的反人性。还好p4可以在设置里替换成外部的比较合并工具。方法见下图&#xff1a; 1. 比较 2. 合并 注意&#xff0c;如果合并设置有问题&#xff08;某些P4版本&#xff09;&#xff0c;则需要通过一个bat文件来做中转&a…