【Redis】 数据淘汰策略

  • 面试官询问缓存过多而内存有限时内存被占满的处理办法,引出 Redis 数据淘汰策略。

数据淘汰策略与数据过期策略不同,
过期策略针对设置过期时间的 key 删除,
淘汰策略是在内存不够时按规则删除内存数据。

在这里插入图片描述

八种数据淘汰策略介绍

  • no evision(默认策略):新key到来不淘汰,内存满不允许写入新数据。
  • volatile - ttl:对设置过期时间的key,比较剩余过期时间,剩余时间短的优先淘汰。
  • allkeys random:适用于所有key,随机淘汰数据。
  • volatile - random:针对设置过期时间的key随机淘汰。
  • allkeys - lru:基于LRU算法淘汰所有key,LRU指最近最少使用,用当前时间减去最后访问时间,值越大淘汰优先级越高。
  • volatile - lru:对设置过期时间的key基于LRU算法淘汰。
  • allkeys - lfu:基于LFU算法淘汰所有key,LFU是最少频率使用,统计每个key访问频率,值越小淘汰优先级越高。
  • volatile - lfu:对设置过期时间的key基于LFU算法淘汰。
  1. LRU和LFU概念重点讲解
    • LRU主要统计时间,LFU主要统计访问频率,理解二者概念和区别在面试中很重要,不一定要记住八种策略,但要掌握这两个概念。
  2. 策略使用建议
    • 业务无要求或无明显冷热区分,优先建议使用allkeys - lru,利用算法优势保留最近常访问数据,因为访问频率不一定能准确反映数据热度。
    • 业务中数据访问频率差别不大,无明显冷热数据区分,可使用allkeys random或volatile - random随机删除数据。
    • 业务中有置顶需求,使用volatile - ttl,置顶数据不设置过期时间可一直不被淘汰。
    • 业务中有短时高频访问数据,建议使用allkeys - lfu或volatile - lfu。
  3. 面试中相关问题及应对方法
    • 对于数据库数据多而Redis存储有限时保证热点数据的问题,可使用allkeys - lru策略淘汰最近最少使用数据。
    • Redis内存用完后的情况取决于使用的淘汰策略,如默认的no evision会直接报错。

在这里插入图片描述

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

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

相关文章

meshy的文本到3d的使用

Meshy官方网站: 中文官网: Meshy官网中文站 ​编辑 Opens in a new window ​编辑www.meshycn.com Meshy AI 中文官网首页 英文官网: Meshy目前似乎还没有单独的英文官网,但您可以在中文官网上找到英文界面或相关英文资料。 链…

计算机网络压缩版

计算机网络到现在零零散散也算过了三遍,一些协议大概了解,但总是模模糊糊的印象,现在把自己的整体认识总结一下,(本来想去起名叫《看这一篇就够了》,但是发现网上好的文章太多了,还是看这篇吧&a…

C++-----线性结构

C线性结构模板 概念:线性结构是一种数据元素之间存在一对一线性关系的数据结构,如数组、链表、栈、队列等。C中的模板可以让我们编写通用的代码,适用于不同的数据类型,而不必为每种数据类型都重复编写相同的代码结构。作用&#…

spring cloud gateway 3

**Spring Cloud Gateway 3** 是 Spring Cloud 生态系统中的一个重要组件,用于构建 API 网关,提供路由、监控、安全等关键功能。以下是关于 Spring Cloud Gateway 3 的详细介绍: ## 1. 什么是 Spring Cloud Gateway? **Spring Clou…

探究音频丢字位置和丢字时间对pesq分数的影响

丢字的本质 丢字的本质是在一段音频中一小段数据变为0 丢字对主观感受的影响 1. 丢字位置 丢字的位置对感知效果有很大影响。如果丢字发生在音频信号的静音部分或低能量部分,感知可能不明显;而如果丢字发生在高能量部分或关键音素上,感知…

支持向量机入门指南:从原理到实践

目录 1 支持向量机的基本概念 1.2 数学表达 2 间隔与支持向量 2.1 几何间隔 2.2 支持向量的概念 2.3 规范化超平面 2.4 支持向量的深入分析 2.4.1 支持向量的特征 2.4.2 支持向量的作用 2.4.3 支持向量的代数表示 2.5 KKT条件 3 最优化问题 3.1 问题的形成 3.2 规…

使用Webpack构建微前端应用

英文社区对 Webpack Module Federation 的响应非常热烈,甚至被誉为“A game-changer in JavaScript architecture”,相对而言国内对此热度并不高,这一方面是因为 MF 强依赖于 Webpack5,升级成本有点高;另一方面是国内已…

SQLite本地数据库的简介和适用场景——集成SpringBoot的图文说明

前言:现在项目普遍使用的数据库都是MySQL,而有些项目实际上使用SQLite既足矣。在一些特定的项目中,要比MySQL更适用。 这一篇文章简单的介绍一下SQLite,对比MySQL的优缺点、以及适用的项目类型和集成SpringBoot。 1. SQLite 简介 …

游戏引擎学习第62天

回顾 我们目前正在开发一把虚拟剑,目的是让角色可以用这把剑进行攻击。最初的工作中,我们使用了一个摇滚位图作为虚拟剑的模型,并且实现了一个基本的功能:角色可以丢下剑。但这个功能并没有达到预期的效果,因为我们想…

Java抽象工厂+单例模式

在前端时间开发过程中,有这样一个业务场景:A;B两家厂商设备进行设备信息的同步功能。 根据实际场景,做了抽象工厂+单例模式实现调用工厂时,生成不同的具体业务引用对象,实现方法的调用。 概念: 抽象工厂模式通过接口或抽象类来创建一系列相关或依赖对象。它定义了一组工…

spring专题笔记(六):bean的自动装配(自动化注入)-根据名字进行自动装配、根据类型进行自动装配。代码演示,通俗易懂。

目录 一、根据名字进行自动装配--byName 二、根据类型进行自动装配 byType 本文章主要是介绍spring的自动装配机制, 用代码演示spring如何根据名字进行自动装配、如何根据类型进行自动装配。代码演示,通俗易懂。 一、根据名字进行自动装配--byName Us…

petalinux 中 cmake 需要用到的环境变量

自定义修改部分环境变量, 实测可用

搭建ORB-SLAM3编译环境

Pangolin git clone https://gitclone.com/github.com/stevenlovegrove/Pangolin sudo apt-get install libxkbcommon-dev sudo apt-get install wayland-protocols sudo apt install libglew-dev cd Pangolin mkdir build cd build cmake … make -j sudo make install 2、安…

opencv中的各种滤波器简介

在 OpenCV 中,滤波器是图像处理中的重要工具,用于对图像进行平滑、去噪、边缘检测等操作。以下是几种常见滤波器的简单介绍。 1. 均值滤波 (Mean Filter) 功能: 对图像进行平滑处理,减少噪声。 应用场景: 去除图像…

深入解析MySQL索引结构:从数组到B+树的演变与优化

前言: 在数据库查询中,索引是一种关键的性能优化工具。然而,索引的失效可能导致查询效率大幅下降。为了更好地理解索引的工作原理及规避其失效,深入了解索引结构的演变过程尤为重要。 MySQL 的索引数据结构从简单到复杂&#xff0…

43. Three.js案例-绘制100个立方体

43. Three.js案例-绘制100个立方体 实现效果 知识点 WebGLRenderer(WebGL渲染器) WebGLRenderer是Three.js中最常用的渲染器之一,用于将3D场景渲染到网页上。 构造器 WebGLRenderer(parameters : Object) 参数类型描述parametersObject…

【Java】Jackson反序列化示例

上篇文章【Java】Jackson序列化案例分析:https://blog.csdn.net/AwesomeP/article/details/144726180 需求 将如下Json字符串映射在Java对象中。 { “name”: “John Doe”, “phone”: “1234567890”, “age”: 30, “birthday”: “2000-01-01 12:00:00”, “cr…

关于studywolf_control动态运动原语

链接: ​​​​​Dynamic movement primitive | studywolf GitHub - studywolf/control: A repository for control benchmarking code GitHub - studywolf/pydmps 以下内容讲解这个指令下的逻辑:python3 run.py arm3 dmp write 目录 (一) run.py…

@RequestParam和@PathVariable的解释与区别

在 Spring 框架中,RequestParam和PathVariable都是用于从 HTTP 请求中获取参数的注解,但它们的使用场景和获取参数的方式有所不同。 1. RequestParam 解释:RequestParam主要用于从 HTTP 请求的查询参数(也就是 URL 中?后面的键值…

Python vs PHP:哪种语言更适合网页抓取

本文将比较 Python 和 PHP,以帮助读者确定哪种语言更适合他们的需求。文章将探讨两种语言的优点和缺点,并根据读者的经验水平分析哪种语言可能更容易上手。接下来,文章将深入探讨哪种语言在抓取网页数据方面更胜一筹。 简而言之,…