redis数据淘汰策略:

面试官:了解redis数据淘汰策略吗?

就是当Redis内存使用达到设置的上限时, 此时需要使用redis数据淘汰机制来进行数据淘汰。(有针对key的 和 针对value数据的)

Redis支持8种不同策略来选择要删除的key:

  • noeviction: 不淘汰任何key,但是内存满时不允许写入新数据,默认就是这种策略。
  • volatile-ttl: 对设置了TTL的key,比较key的剩余TTL值,TTL越小越先被淘汰
  • allkeys-random:对全体key ,随机进行淘汰。也就是直接从db->dict中随机挑选
  • volatile-random:对设置了TTL的key ,随机进行淘汰。也就是从db->expires中随机挑选。
  • allkeys-lru: 对全体key,基于LRU算法进行淘汰
  • volatile-lru: 对设置了TTL的key,基于LRU算法进行淘汰
  • allkeys-lfu: 对全体key,基于LFU算法进行淘汰
  • volatile-lfu: 淘汰最少使用(最近最不常用)的键值;
    比较容易混淆的有两个:
    • LRU(Least Recently Used),最少最近使用。用当前时间减去最后一次访问时间,这个值越大则淘汰优先级越高。
    • LFU(Least Frequently Used),最少频率使用。会统计每个key的访问频率,值越小淘汰优先级越高。

在这里插入图片描述

● LRU算法
○ 维护一个双向链表,用于顺序存储被访问过的key。在访问数据时,最新访问过的key将被移动到表头,即最近访问的key在表头,最少访问的key在表尾。
● 近似LRU算法(Redis)
○ 给每个key维护一个时间戳,淘汰时随机采样5个key,从中淘汰掉最旧的key。如果还是超出内存限制,则继续随机采样淘汰。
○ 优点:比LRU算法节约内存 只对少量key进行取样(LRU算法需要把每一个key都存下来维护一个链表),却可以取得非常近似的效果
● LFU算法
○ Redis4.0 引入。 根据数据访问频次 淘汰最近访问次数最低的数据

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

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

相关文章

【JavaSE专栏62】Java继承:面向对象编程中重要的基石

Java继承:面向对象编程中重要的基石 🚀 Java继承:面向对象编程中重要的基石 🚀摘要引言 🌐 一、探寻继承的本质 🕵️‍♂️1. 继承的基本原理2. 实现继承的方式单继承与多继承extends关键字 3. 子类与父类关…

SSL证书更新

首先,我们需要理解为什么需要更新SSL证书。SSL证书的有效期通常为一年。一旦证书过期,浏览器会显示警告,提示用户该网站的SSL证书已经过期,这可能会导致用户对网站的信任度下降,甚至直接离开网站。此外,一些…

【IDEA】IntelliJ IDEA中进行Git版本控制

本篇文章主要记录一下自己在IntelliJ IDEA上使用git的操作,一个新项目如何使用git进行版本控制。文章使用的IDEA版本 IntelliJ IDEA Community Edition 2023.3,远程仓库为https://gitee.com/ 1.配置Git(File>Settings) 2.去Git…

最新Redis7持久化(权威出版)

首先我们要知道什么是持久化:持久化是指将数据保存到磁盘上,以确保在Redis服务器重启时数据不会丢失。 Redis支持两种主要的持久化方式:RDB持久化和AOF持久化 下面让我依次给你介绍一下: RDB持久化 作用 这是将Redis数据保存…

【JavaSE专栏64】抽象类 vs. 接口:面向对象编程中的非实例化之争

】抽象类 vs. 接口:面向对象编程中的非实例化之争 《抽象类 vs. 接口:面向对象编程中的非实例化之争》摘要 🚀引言 🌐 一、抽象类的实质与应用 📘二、接口:定义规范与实现解耦 📝三、对比抽象类…

STM32-TIM定时器输出比较

目录 一、输出比较简介 二、PWM简介 三、输出比较通道(通用) 四、输出比较通道(高级) 五、输出比较模式 六、PWM基本结构 七、PWM参数计算 八、外设介绍 8.1 舵机 8.2 直流电机及驱动 九、开发步骤 十、输出比较库函数…

组件之间传值

目录 1:组件中的关系 2:父向子传值 3:子组件向父组件共享数据 4:兄弟组件数据共享 1:组件中的关系 在项目中使用到的组件关系最常用两种是,父子关系,兄弟关系 例如A组件使用B组件或者C组件…

以太坊虚拟机EVM介绍,智能合约详解

以太坊为例:什么是智能合约?智能合约怎么部署、调用、执行?智能合约的原理?智能合约存在哪儿?如何区分调用的是智能合约?世界状态数据库、EVM、智能合约它们之间的关系? 什么是智能合约 指的是…

【C语言程序设计】编写简单的C程序

目录 前言 一、程序设计 二、程序改错 三、程序完善 总结 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。 💡本文由Filotimo__✍️原创,首发于CSDN📚。 📣如…

ubuntu 18.04 pycharm安装

这里主要记录一下ubuntu18.04安装pycharm的过程,以备不时之需查阅~~ 安装并启动 1、通过Other Versions - PyCharm下载相应安装包,并解压。 tar -zxvf pycharm-professoinal-2020.1.3.tar.gz 2、将解压缩后的安装包移动到 /opt 目录下 sudo mv pych…

喜讯:抗HPV全新升级——佳卫苗灭杀病毒HPV正式上市

众所周知,HPV(人乳头瘤病毒)感染是周多妇科疾病的主要原因,而高危型HPV(人乳头瘤病毒)的持续感染更是导致宫颈癌的主要因素。自此以后,人类与HPV之间的战斗便从未停止,越来越多的相关…

VUE笔试题精讲1

vue专题| ProcessOn免费在线作图,在线流程图,在线思维导图 VUE面试题视频 01-Vue组件之间通信方式有哪些? 1. 组件通信常⽤⽅式有以下8种: props $emit/$on $children/$parent $attrs/$listeners ref $root eventbus vuex 注意vue3中废弃的⼏个API https://v3-mig…