Redis 内存回收策略小结
Redis 内存回收策略
及时回收内存中不需要的数据,能有效地保持性能和防止内存溢出。Redis内存回收主要有两种场景
- 删除过期的键值对
- 内存使用达到maxmemory时触发回收策略
删除过期的键值对
-
惰性删除: 在查询时如果发现 该键值对已经过期则执行删除操作并返回为空。
-
优势
这种策略对CPU友好,它不需要单独维护ttl链表处理过期key。但可能存在内存泄露问题,如果一个键值对过期了,一直不查询它,内存就一直不会释放。
-
-
定期任务删除
Redis 启动了一个周期性的任务,用来主动地查找并删除数据库中的过期键。这个过程不是逐个检查每个键,而是从设置的过期键集合中随机选取一部分样本,并删除其中已过期的键。
相关配置
配置参数 hz 即 Redis 每秒检查过期键的次数,默认10
定时任务每次随机检查一定数量键ACTIVE_EXPIRE_CYCLE_LOOKUPS_PER_LOOP 定义,默认值通常是 20
内存溢出控制策略
当内存达到配置的maxmemory时触发回收策略。Redis 提供了多种淘汰策略,从淘汰键值对范围上分有
- 从所有key 进行筛选清除
- 从设置了过期时间的键值对中筛选清除
从筛选算法上分有lru ,random,ttl (最短剩余生存时间优先)
以下是具体淘汰策略。
-
noeviction:
这是最保守的策略,所有的写操作都将因内存不足返回错误,并不会移除任何键。适用于那些绝对不能丢失数据的应用场景。
-
allkeys-lru:
从所有键中选择最近最少使用的键进行删除。一般的缓存使用场景可以选择该策略,该策略相对比较"公平"
-
volatile-lru:
只考虑设置了过期时间的键,从中选择最近最少使用的键进行删除。保证永不过期的重要的数据不被自动清除,或者永不过期的数据非常重要时该策略是个选择。
-
allkeys-random:
从所有键中随机选择键进行删除。
这种策略不考虑键的使用频率等因素。实现简单,对 CPU 的消耗相对较小,不如 LRU 算法那样"公平"
-
volatile-random:
只考虑设置了过期时间的键,从中随机选择键进行删除。
与volatile-lru类似,但采用的是随机选择。 -
volatile-ttl:
从设置了过期时间的键中选择剩余生存时间最短的键进行删除。
当需要优先淘汰那些即将过期的数据时,可以使用此策略。
总结
Redis中尽量存放一些热点数据,切勿所有数据放入Redis中,Redis虽然可以持久化数据,但Redis操作主要在内存中操作,数据会加载到内存,切勿把Redis当成Mysql之类,所有数据都放到Redis。
相关文章:
Redis 内存回收策略小结
Redis 内存回收策略 及时回收内存中不需要的数据,能有效地保持性能和防止内存溢出。Redis内存回收主要有两种场景 删除过期的键值对内存使用达到maxmemory时触发回收策略 删除过期的键值对 惰性删除: 在查询时如果发现 该键值对已经过期则执行删除操作…...
React常用前端框架合集
React 是 Facebook 开发的一款用于构建用户界面的 JavaScript 库。由于其高效、灵活的特性,React 成为了目前最流行的前端框架之一。为了帮助开发者更好地利用 React 构建应用,市场上涌现了许多优秀的辅助工具和框架。本文将详细介绍几个常用的 React 前…...
python对文件的读写操作
任务:读取文件夹下的批量txt数据,并将其写入到对应的word文档中。 txt文件中包含:编号、报告内容和表格数据。写入到word当中:编号、报告内容、表格数据、人格雷达图以及对应的详细说明(详细说明是根据表格中的标识那一列中的加号…...
Redis工具类(解决缓存穿透、缓存击穿)
文章目录 前言IBloomFilterObjectMapUtilsCacheClient使用示例具体业务的布隆过滤器控制层服务层 前言 该工具类包含以下功能: 1.将任意对象存储在 hash 类型的 key 中,并可以设置 TTL 2.将任意对象存储在 hash 类型的 key 中,并且可以设置…...
Air780E量产binpkg文件的获取方法
Air780E量产binpkg文件如何获取呢?操作方法如下。 一、背景 最近luatos开发客户增多,客户在量产烧录的时候需要binpkg文件,但是有些客户不知道binpkg文件是什么,在哪里获取,是否可以用soc文件提取出来,使…...
C++STL之stack
1.stack的使用 函数说明 接口说明 stack() 构造空的栈 empty() 检测 stack 是否为空 size() 返回 stack 中元素的个数 top() 返回栈顶元素的引用 push() 将元素 val 压入 stack 中 pop() 将 stack 中尾部的元素弹出 2.stack的模拟实现 #include<vector> namespace abc { …...
git的学习之远程进行操作
1.代码托管GitHub:充当中央服务器仓库的角色 2.git远程进行操作 3.配置本地服务器的公钥 4.推送 5.git远程操作 pull .gitignore 6.给命令配置别名 git config --global alias.st status 7.标签管理 git tag -a [name] -m "XXX" [commit_id] 操作标签…...
蓝桥杯普及题
[蓝桥杯 2024 省 B] 好数 题目描述 一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位……)上的数字是奇数,偶数位(十位、千位、十万位……)上的数字是偶数,我们就称之为“好数”。 给定一个正整数 N N N,请计算从 1 1...
Spreadsheet导出excel
记录下常用的方法 数字转字符:Coordinate::stringFromColumnIndex(27); 输出 AA字符转数字:Coordinate::columnIndexFromString(AA); 输出27设置单元格式 eg:(设置为保留两位小数点) $sheet->getStyle($columnLetter)->getNumberFormat()->set…...
Leetcode|454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和
15.三数之和 哈希解法: 用俩个for循环求出,所需的a和b,再用哈希表,判断剩余的那个c是否在数组 class Solution { public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>…...
使用ceph-csi把ceph-fs做为k8s的storageclass使用
背景 ceph三节点集群除了做为对象存储使用,计划使用cephfs替代掉k8s里面现有的nfs-storageclass。 思路 整体实现参考ceph官方的ceph csi实现,这套环境是arm架构的,即ceph和k8s都是在arm上实现。实测下来也兼容。 ceph-fs有两种两种挂载方…...
太速科技-212-RCP-601 CPCI刀片计算机
RCP-601 CPCI刀片计算机 一、产品简介 RCP-601是一款基于Intel i7双核四线程的高性能CPCI刀片式计算机,同时,将CPCI产品的欧卡结构及其可靠性、可维护性、可管理性与计算机的抗振动、抗冲击、抗宽温环境急剧变化等恶劣环境特性进行融合。产品特别…...
【解决 Windows 下 SSH “Bad owner or permissions“ 错误及端口转发问题详解】
使用 Windows 连接远程服务器出现 Bad owner or permissions 错误及解决方案 在 Windows 系统上连接远程服务器时,使用 SSH 可能会遇到以下错误: Bad owner or permissions on C:\Users\username/.ssh/config这个问题通常是由于 SSH 配置文件 .ssh/con…...
使用预训练的BERT进行金融领域问答
获取更多完整项目代码数据集,点此加入免费社区群 : 首页-置顶必看 1. 项目简介 本项目旨在开发并优化一个基于预训练BERT模型的问答系统,专注于金融领域的应用。随着金融市场信息复杂性和规模的增加,传统的信息检索方法难以高效…...
ReactOS系统中MM_REGION结构体的声明
ReactOS系统中MM_REGION结构体的声明 ReactOS系统中MM_REGION结构体的声明 文章目录 ReactOS系统中MM_REGION结构体的声明MM_REGION MM_REGION typedef struct _MM_REGION {ULONG Type;//MEM_COMMIT,MEM_RESERVEULONG Protect;//PAGE_READONLYY,PAGE_READ_WRITEULONG Length;…...
web相关知识学习笔记
一, web安全属于网络信息安全的一个分支,www即全球广域网,也叫万维网,是一个分布式图形信息系统 二, 1.①安全领域,通常将用户端(浏览器端)称为前端,服务器端称为后端 ②…...
App测试环境部署
一.JDK安装 参考以下AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 二.SDK安装 安装地址:https://www.androiddevtools.cn/ 解压 环境变量配置 变量名:ANDROID_SDK_HOME 参考步骤: A…...
【论文阅读】Tabbed Out: Subverting the Android Custom Tab Security Model
论文链接:Tabbed Out: Subverting the Android Custom Tab Security Model | IEEE Conference Publication | IEEE Xplore 总览 “Tabbed Out: Subverting the Android Custom Tab Security Model” 由 Philipp Beer 等人撰写,发表于 2024 年 IEEE Symp…...
2025 - AI人工智能药物设计 - 中药网络药理学和毒理学的研究
中药网络药理学和毒理学的研究 TCMSP:https://old.tcmsp-e.com/tcmsp.php 然后去pubchem选择:输入Molecule Name 然后进行匹配:得到了smiles 再次通过smiles:COC1C(CC(C2C1OC(CC2O)C3CCCCC3)O)O 然后再次输入:http…...
iwebsec靶场 XSS漏洞通关笔记
目录 前言 1.反射性XSS 2.存储型XSS 3.DOM型XSS 第01关 反射型XSS漏洞 1.打开靶场 2.源码分析 3.渗透 第02关 存储型XSS漏洞 1.打开靶场 2.源码分析 4.渗透 方法1: 方法2 方法3 第03关 DOM XSS漏洞 1.打开靶场 2.源码分析 3.渗透分析 3.渗透过程…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
