【Redis】 数据淘汰策略

embedded/2024/12/27 16:26:50/
  • 面试官询问缓存过多而内存有限时内存被占满的处理办法,引出 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.ppmy.cn/embedded/149211.html

相关文章

NIPS2014 | GAN: 生成对抗网络

Generative Adversarial Nets 摘要-Abstract引言-Introduction相关工作-Related Work对抗网络-Adversarial Nets理论结果-Theoretical Results实验-Experiments优势和不足-Advantages and disadvantages缺点优点 结论及未来工作-Conclusions and future work研究总结未来研究方…

自动驾驶控制算法-横向控制与流程代码仿真

本文是学习自动驾驶控制算法第八讲(一)横向控制算法与流程图以及后续两节的学习笔记。 1 1. 算法流程图 2 A,B计算模块 A [ 0 1 0 0 0 C α f C α r m v x − C α f C α r m a C α f − b C α r m v x 0 0 0 1 0 a C α f − b C α r I v x −…

ElasticPDF-新国产 PDF 编辑器开发框架(基于 pdf.js Web PDF批注开发,实现高亮多边形橡皮擦历史记录保存注释文字)

摘要: ElasticPDF 是一款新国产 PDF 编辑器开发框架,基于开源 pdf.js 的渲染框架,增加了批注功能,支持全离线运行,适用于公网及内网系统。代码包结构延续了 pdf.js-dist 简洁的风格,兼容所有主流浏览器&…

HTMLCSS:超炫丝滑的卡片水波纹效果

这段代码创建了一个卡片,卡片上有三个波动效果,这些波动效果通过 CSS 的keyframes 动画实现,创建了一个旋转的动画效果。这种效果适用于创建动态的视觉效果,例如音乐播放器的封面、动态背景或其他需要动态效果的界面元素。 演示效…

【优选算法---归并排序衍生题目】剑指offer51---数组中的逆序对、计算右侧小于当前元素的个数、翻转对

一、剑指offer51---数组中的逆序对 题目链接: LCR 170. 交易逆序对的总数 - 力扣(LeetCode) 题目介绍: 在数组中的两个数字,如果前面⼀个数字大于后面的数字,则这两个数字组成⼀个逆序对。输入一个数组&#xff0c…

Linux复习4——shell与文本处理

认识vim编辑器 #基本语法格式: vim 文件名 •如果文件存在,进入编辑状态对其进行编辑 •如果文件不存在,创建文件并进入编辑状态 例: [rootlocalhosttest]# vim practice.txt #Vim 编辑器三种模式: 命令模式&a…

stm32能跑人工智能么

STM32确实能够运行人工智能算法,这得益于其强大的计算能力和丰富的外设接口,为运行小型人工智能算法提供了基础。以下是对STM32运行人工智能能力的详细分析: 一、硬件基础 STM32作为一款广泛应用于工业控制、智能家居等领域的微控制器&…

OCR实践-Table-Transformer

前言 书接上文 OCR实践—PaddleOCR Table-Transformer 与 PubTables-1M table-transformer,来自微软,基于Detr,在PubTables1M 数据集上进行训练,模型是在提出数据集同时的工作, paper PubTables-1M: Towards comp…