IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 对LRU算法的理解和应用场景 -> 正文阅读

[大数据]对LRU算法的理解和应用场景

背景

最近没事看公司自研ssr框架feb,注意到里面页面级缓存和组件级缓存用到了LRU缓存,这让我想起了之前看keep-alive源码,貌似也是使用了LRU缓存。之前看过redis的文章,好像也是基于这个理念实现的;在刷leetcode的时候,有时候也会碰到类似LRU的题目。今天记录一下LRU算法,加深我们对这块的印象。

研究

LRU (Least recently used:最近最少使用)最被访问的,被访问的几率变大。最被访问的,当磁盘被写满时,会被清除。

一张图来理解一下:
在这里插入图片描述

  1. 假设我们有一块内存,一共能够存储 5 数据块;
  2. 依次向内存存入A、B、C、D、E,此时内存已经存满;
  3. 再次插入新的数据时,会将在内存存放时间最久的数据A淘汰掉;
  4. 当我们在外部再次读取数据B时,已经处于末尾的B会被标记为活跃状态,提到头部,数据C就变成了存放时间最久的数据;
  5. 再次插入新的数据G,存放时间最久的数据C就会被淘汰掉;

算法实现

class LRUCache {
  // 存储数据
  put (key, value) {
    if (this.cache[key]) {
      // 如果该 key 之前存在,将 key 重新激活
      this.active(key)
      this.cache[key] = value
      // 而且此时缓存的长度不会发生变化
      // 所以不需要进行后续的长度判断,可以直接返回
      return
    }
?
    // 存储之前需要先判断长度是否达到上限
    if (this.list.length >= this.capacity) {
      // 由于每次存储后,都会将 key 放入 list 最后,
      // 所以,需要取出第一个 key,并删除cache中的数据。
      const latest = this.list.shift()
      delete this.cache[latest]
    }
    // 写入缓存
    this.cache[key] = value
    // 写入缓存后,需要将 key 放入 list 的最后
    this.list.push(key)
  }
}

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-22 20:40:57  更:2022-03-22 20:41:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:56:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码