Redis 的6种回收策略(淘汰策略)详解

news2024/11/16 11:05:57

Redis 的6种回收策略(淘汰策略)详解

  • 1、Redis的六种淘汰策略
    • 1. volatile-lru
    • 2. volatile-ttl
    • 3. volatile-random
    • 4. allkeys-lru
    • 5. allkeys-random
    • 6. no-eviction
  • 2、使用策略规则


💖The Begin💖点点关注,收藏不迷路💖

在Redis中,当内存使用达到上限时,为了保持服务的稳定性和响应速度,Redis提供了多种数据回收(淘汰)策略,以便在必要时释放内存空间。本文将详细介绍Redis的六种主要淘汰策略。

1、Redis的六种淘汰策略

1. volatile-lru

  • 说明:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据进行淘汰。
  • 适用场景:适用于数据访问频率差异较大的场景,即部分数据访问频繁,部分数据访问较少。

2. volatile-ttl

  • 说明:从已设置过期时间的数据集中挑选那些即将过期的数据进行淘汰。
  • 适用场景:当希望优先淘汰那些即将过期的数据时,可以使用此策略。

3. volatile-random

  • 说明:从已设置过期时间的数据集中随机选择数据进行淘汰。
  • 适用场景:当数据集的访问频率没有明显差异,且希望随机淘汰过期数据时,此策略是一个不错的选择。

4. allkeys-lru

  • 说明:从所有数据集(server.db[i].dict)中挑选最近最少使用的数据进行淘汰,不局限于已设置过期时间的数据。
  • 适用场景:如果数据访问频率呈现出幂律分布(即大部分数据访问频率低,少数数据访问频率高),此策略非常有效。

5. allkeys-random

  • 说明:从所有数据集中随机选择数据进行淘汰。
  • 适用场景:当数据集的访问频率几乎相同时,可以使用此策略。然而,由于Redis的设计初衷是快速存取,因此这种策略在实际应用中并不常见。

6. no-eviction

  • 说明:不进行任何淘汰操作,当内存不足时,Redis会拒绝新的写入请求,并返回错误。
  • 适用场景:在某些特定的场景下,如不希望因淘汰数据而影响业务逻辑时,可以使用此策略。但需要注意的是,这可能会导致Redis服务拒绝新的写入请求。

2、使用策略规则

  • 幂律分布场景:如果数据访问频率呈现出幂律分布,即大部分数据访问频率低,少数数据访问频率高,推荐使用allkeys-lru策略。这可以确保那些长时间未被访问的数据被优先淘汰,从而为新的热点数据腾出空间。

  • 平等分布场景:如果数据集的访问频率几乎相同,即所有数据的访问频率都相似,那么可以考虑使用allkeys-random策略。然而,在实际应用中,这种情况较为少见,因为大多数业务场景下的数据访问都会存在一定的差异。

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyIP:强大且简单好用!

在这个数字化的时代,IP地址就像是我们的网络身份证。各位在日常的工作中,肯定会会遇到需要和 IP 地址相关的需求。 今天和大家聊一聊一个非常好用的开源 IP 工具项目 - MyIP。 简介 MyIP一个开源IP工具箱,提供了一系列的网络检测工具&…

适合双11入手的蓝牙耳机推荐?4款开放式耳机测评

2024年也确实快到大家购物疯狂买买买的双11日子了,我相信肯定也有人在购物车攒了一大堆商品就等着双11清空了。那肯定现在还有人在为双11的购物车放什么东西发愁吧,那对于我来说,双11的购物车应该也是要有蓝牙耳机的一席之地的。 因为毕竟在…

Python酷库之旅-第三方库Pandas(068)

目录 一、用法精讲 271、pandas.Series.dt.dayofyear属性 271-1、语法 271-2、参数 271-3、功能 271-4、返回值 271-5、说明 271-6、用法 271-6-1、数据准备 271-6-2、代码示例 271-6-3、结果输出 272、pandas.Series.dt.days_in_month属性 272-1、语法 272-2、参…

吴恩达老师机器学习作业-ex7(聚类)

导入库,读取数据,查看数据类型等进行分析,可视化数据 import matplotlib.pyplot as plt import numpy as np import scipy.io as sio#读取数据 path "./ex7data2.mat" data sio.loadmat(path) # print(type(data)) # print(data…

【LabVIEW学习篇 - 13】:队列

文章目录 队列 队列 队列通常情况下是一种先入先出(FIFO:First in First out)的数据结构,常用作数据缓存,通过队列结构可以保证数据有序的传递,避免竞争和冲突。 案例:利用队列,模…

WordPress--漏洞复现

1.搭建好环境进入后台登录界面登录管理员 2.进入后选择外观---编辑 3.将文件内容改为我们的一句话木马,点击更新文件 4.访问这个文件显示出phpinfo证明注入成功

PXE技术在操作系统批量安装中的应用与实现

PXE(Preboot Execution Environment)即预启动执行环境,它是一种可以使计算机通过网络启动的技术。 一、工作原理 客户端请求: 当支持 PXE 的计算机启动时,其网卡的固件会广播一个请求,寻找网络中的 PXE 服…

JavaScript Web API入门day2

目录 1.DOM事件基础 1.1 事件监听 1.2 事件监听案例 1.2.1 京东点击关闭顶部广告 1.2.2 随机点名案例 1.3 事件监听版本 2. 事件类型 2.1 事件类型案例 2.1.1 轮播图点击切换 2.1.2 评论字数统计 3.事件对象 3.1 获取事件对象 3.2 事件对象常用属性 3.3 事件对象…

【技术前沿】3.3KW高功率密度新突破!基于Infineon XMC1400搭配CoolSiC™ Mosfet 的PFC数字电源方案

随着社会经济发展、能源结构变革,近几年全球对家用储能系统的需求量一直保持相当程度的增长。2023年,全球家用储能系统市场销售额达到了87.4亿美元,预计2029年将达到498.6亿美元,年复合增长率(CAGR)为33.68…

定时任务-xxl-job

一. 为什么定时任务可以定时执行 定时任务可以定时执行的原理是通过操作系统提供的定时器实现的。 以下是定时任务能够准时执行的基本原理和相关技术: 操作系统的调度器: 操作系统(如Linux、Windows等)内部都有一个调度器&#x…

TortoiseGit小乌龟在gitlab配置ssh免密

1. 生成ssh密钥(默认在~/.ssh路径生产,id_rsa和id_rsa.pub) ssh-keygen -t rsa -b 4096 -C "xxxqq.com"2. 打开gitlab,在搜索栏搜索ssh,找到SSH Keys,然后添加id_rsa.pub公钥的内容到网页,保存。 3. 打开To…

如何将PostgreSQL的数据实时迁移到SelectDB?

PostgreSQL 作为一个开源且功能强大的关系型数据库管理系统,在 OLTP 系统中得到了广泛应用。很多企业利用其卓越的性能和灵活的架构,应对高并发事务、快速响应等需求。 然而对于 OLAP 场景,PostgreSQL 可能并不是最佳选择。 为了实现庞大规…

数据结构(其三)--栈与队列

目录 5.栈 5.1 栈的基本操作 5.2 各种栈 (1).顺序栈 i.普通顺序栈 ii.共享栈 iii.关于销毁 (2).链栈 6.队列 6.1 队列的基本操作 6.2 各种队列 (1).循环队列 i.代码 ii.另外一种写法 &#xff08…

[Latex美化]-表格加底色,添加灰色美化表格,便于阅读

1 导入库 \usepackage{xcolor} \usepackage{colortbl, booktabs} 2 插入指令(指定行前) \rowcolor{gray!30} 具体代码如下 效果如下

循环神经网络RNN介绍

文章目录 1、学习介绍2、RNN的基本结构2.1、图例2.2、公式2.3、公式计算示例2.3.1、给定参数2.3.2、时间步计算 3、序列依赖与梯度消失/爆炸3.1、序列依赖3.2、梯度消失与爆炸3.3、总结 4、传统的前馈神经网络4.1、结构4.2、工作原理4.3、特点4.4、局限性 5、CNN与RNN的关系5.1…

【建造者模式】全面解析与最佳实践:打造复杂对象的蓝图(构建复杂对象的艺术)

文章目录 Java中的建造者模式:全面解析与最佳实践1. 引言2. 建造者模式概念定义与用途适用场景解决的问题 3. 建造者模式原理主要角色解释工作流程UML图和时序图 4. 建造者模式在Java中的实现逐步构建示例程序1. 创建抽象建造者类2. 实现具体建造者类3. 设计产品类4…

如何在厂商软件不提供二次开发资源的情况下实现LabVIEW开发

在遇到厂商提供的软件不支持二次开发资源时,如果需要使用LabVIEW进行开发,通常面临以下几个挑战:设备通讯接口封闭、协议不公开、厂商技术支持有限等。这些问题需要综合考虑并制定解决方案,以下是详细的分析: 1. 了解原…

权限模块开发+权限与角色关联(完整CRUD)

文章目录 🌞 Sun Frame:SpringBoot 的轻量级开发框架(个人开源项目推荐)🌟 亮点功能📦 spring cloud模块概览常用工具 🔗 更多信息1.easycode生成代码1.配置2.AuthPermissionDao.java剪切到mapp…

SharpLab:.Net反编译工具,方便实时查看反编译后的代码!

C#提供了很多高级语法,很多都是语法糖。这些语法糖对于初学者来说,很多无法理解。 下面推荐一个开源项目,它能够让我们,实时查看编译过程、生成的中间语言(IL)以及反编译后的代码。 01 项目简介 SharpLa…

C语言 ——深入理解指针(2)

目录 1. 数组名的理解2. 二级指针3. 指针数组4. 字符指针变量5. 数组指针变量6. 函数指针变量7. 函数指针数组 1. 数组名的理解 这里我们使用 &arr[0] 的方式拿到了数组第一个元素的地址,但是其实数组名本来就是地址,而且是数组首元素的地址&#x…