首页 > 系统相关 >内存淘汰机制,LFU和LRU的比较和优缺点以及实现方式

内存淘汰机制,LFU和LRU的比较和优缺点以及实现方式

时间:2023-09-12 17:26:06浏览次数:39  
标签:volatile 优缺点 LFU lru 内存 LRU 淘汰

内存淘汰机制,LFU和LRU的比较和优缺点以及实现方式

Redis 内存满了,会发生什么?

如果redis的内存达到了阈值,会发生内存淘汰,阈值通过配置文件的maxmemory设置

Redis 内存淘汰策略有哪些?

大概分为三类

  • 报错
  • 根据有过期时间淘汰
    • volatile-random,随机淘汰有过期时间的key
    • volatile-ttl,淘汰最早过期的
    • volatile-lru,淘汰最近最少使用的
    • volatile-lfu,淘汰使用频率最低的
  • 全体范围内淘汰
    • allkeys-random,随机淘汰
    • allkeys-lru,淘汰最近最少使用的
    • allkeys-lfu,淘汰使用频率最低的

LRU 算法和 LFU 算法有什么区别?

lru关注的是时间,淘汰的是最近一段时间内最少使用的

lfu关注的是频率,淘汰的是使用频率最低的

Redis 是如何实现 LRU 算法的?

redisObject保存着一个lru字段保存着最后一次访问的时间戳,不使用传统的链表,而是记录一个最后一次访问的时间,淘汰最后访问时间最早的。

优点:节省内存

缺点:会导致缓存污染问题,只访问一次的数据会将之前的热点数据淘汰掉

什么是 LFU 算法?

根据使用频率的高低进行淘汰,淘汰使用频率最低的key,可以解决lru的缺点

Redis 是如何实现 LFU 算法的?

复用了reidsObject的lru字段,将lru字段分为两部分,一部分记录最后访问的时间戳,另外一部分记录热度,热度会随着时间逐步降低,访问次数越多,热度也会越高,但不是线性增长,热度越高热度越难增加

标签:volatile,优缺点,LFU,lru,内存,LRU,淘汰
From: https://www.cnblogs.com/xiuer211/p/17697266.html

相关文章

  • 开源社区赋能,Walrus 用户体验再升级
    基于平台工程理念的应用管理平台Walrus已于上月正式开源,目前在GitHub已收获177颗星......
  • 分布式缓存与本地缓存的优缺点
    本地缓存:1.访问速度快,但是无法进行大数据存储2.集群数据更新问题3.数据随应用的重启而丢失分布式缓存:1.支持大数据量存储,不受应用进程影响2.数据集中存储,保证数据的一致性3.数据读写分离,高性能,高可用4.数据跨网络传输,性能低于本地缓存......
  • HybridApp(混合应用)开发框架的优缺点分析
    写在前面HybridApp作为一种既能够在原生应用程序环境中运行,也能够在Web浏览器中运行的应用程序。它主要使用Web技术进行开发,如HTML、CSS和JavaScript,并使用一个中间层将其封装在原生应用程序中。当然技术的持续推进,HybridApp相关的前端框架也应运而生。准备比较......
  • Redis配置模式及各自优缺点
    大家好,我是闲者,今天简单聊下redis部署模式。Redis支持多种不同的数据结构和模式,以满足不同的使用场景。以下是一些常见的Redis配置和模式示例以及详解。原文地址:Redis配置模式及各自优缺点一.Rdis有哪些配置方式,及各自优缺点1.单机模式:Redis的最简单配置是单机模式,其中一个Re......
  • LFU缓存算法(理解容易,主要是代码实现内外双map+双双向链表)
    packagearithmetic;importjava.util.HashMap;publicclassFaceTest82{//LFU缓存置换算法//比较词频,词频相同看时间点//置换之后,词频重新开始累计publicFaceTest82(intk){capacity=k;size=0;records=newHashMap<Integer,FaceTest82.Node>();heads=newH......
  • LRUCache算法缓存策略(map+doubleLinkedList)
    packagearithmetic;importjava.util.HashMap;publicclassFaceTest81{//LRUcache缓存策略map+双向链表//get、update、put需要时间复杂度达到O1//map+双向链表结构publicFaceTest81(intcapacity){ cache=newMyCache(capacity);}privateMyCache<Integer,Intege......
  • MySQL 存储引擎 有几种 都有什么优缺点?
    MySQL常见的三种存储引擎为InnoDB、MyISAM和MEMORY。它们各自有一些优缺点:1.InnoDB存储引擎:优点:-提供了事务管理、回滚、崩溃修复能力、和多版本并发控制的事务安全;-支持外键约束,提高了数据的一致性和完整性;-支持行级锁,提高了并发性能;-支持外键约束,提高了数据的一致性和......
  • SQLfuzz字典
    `~!@#$%^&*()-_=+[]{}|\;:'",.<>/?----+/**/&&||<>!(<>)andorxorifnotselectsleepunionfromwhereorderbyconcatgroupbenchmarklengthinisaslikerlikelimitoffsetd......
  • JS虚拟机JS加密技术:优缺点及案例研究
    JS虚拟机是一种用JS语法实现的模拟虚拟机逻辑执行的代码,以执行JS代码的技术。它提供了一种将JS代码编译成二进制指令集的方法,并模拟执行这些指令。本文将介绍jsvmp技术的优缺点,并提供一些案例代码。一、jsvmp技术的优点跨平台兼容性:jsvmp技术可以在不同的操作系统和硬件平台上运行,......
  • 常见的云厂商及其优缺点
    常见的云厂商包括亚马逊AWS(AmazonWebServices)、微软Azure、谷歌云(GoogleCloud)、阿里云(AlibabaCloud)、腾讯云(TencentCloud)等。这些云厂商推出的云服务在以下方面可能存在一些区别:服务范围:不同云厂商提供的服务范围可能有所不同,包括计算、存储、数据库、网络、人工智能、大......