实现LRU缓存算法

发布于2024年2月19日 17:09:10

LRU缓存算法

LRU 的全称是Least Recently Used, 即最久未使用的,属于典型的内存管理算法。

实现思路

因缓存空间是有限的,最近使用的放在最前,最久未使用的放在最后。当缓存空间已满时,新增一条数据时,需删除最后一条。每次取用缓存数据时,都需要更新一次排序。

示例代码

class LRUCache {
    #map;
    #length;
    constructor(len = 10) {
        this.#map = new Map();
        this.#length = len;
    }

    has(key) {
        return this.#map.has(key);
    }
    get(key) {
        if (!this.has(key)) return null;
        const value = this.#map.get(key);
        // 更新排序,使最近使用的排序最前
        this.#map.delete(key);
        this.#map.set(key, value);
        return value;
    }
    set(key, value) {
        if (this.has(key)) {
            this.#map.delete(key);
        }
        this.#map.set(key, value);
        // 如果超过最大长度,删除最后一项
        if (this.#map.size > this.#length) {
            this.#map.delete(this.#map.keys().next().value)
        }
    }
}

应用场景

  • 一般的缓存服务,memcache/redis之类
  • 部分业务场景

本文共 15 个回复

  • djVOoPxfGHtaQ 2024/03/14 06:59

    vPdYCSqiFD

  • kisfQWSml 2024/03/19 00:02

    xaWqubITJcKs

  • vzlywqVXTRnSBPH 2024/06/12 15:42

    KFCHxJPzAWUZvQT

  • SlbFhHxakveKV 2024/07/23 17:04

    DuYslgmKekdZBSEw

  • qngTtUKxbFLkAmdZ 2024/07/31 07:43

    vjIQhKHpNlbiDqSg

  • küçükçekmece elektrikçi 2024/09/14 05:43

    küçükçekmece elektrikçi SEO sayesinde Google'da rakiplerimizi geride bıraktık. http://www.royalelektrik.com/

  • Bedava bahis 2024/09/24 05:58

    Bedava bahis SEO çalışmaları, web sitemizin performansını iyileştirdi. https://www.royalelektrik.com//istanbul-elektrikci/

  • Anahtar kelime doldurma 2024/10/04 15:41

    Anahtar kelime doldurma SEO çalışmaları sayesinde web sitemizin trafiği katlandı. http://royalelektrik.com/esenyurt-elektrikci/

  • Üsküdar klozet tıkanıklığı 2024/10/11 07:43

    Üsküdar klozet tıkanıklığı Üsküdar da profesyonel bir gider açıcı arıyorduk, tam da aradığımız gibi bir firma! https://ourfathersfamily.com/blogs/2882/%C3%9Csk%C3%BCdar-Kanal-T%C4%B1kan%C4%B1kl%C4%B1%C4%9F%C4%B1-A%C3%A7ma

  • Üsküdar su tesisatı hizmeti 2024/10/18 13:43

    Üsküdar su tesisatı hizmeti Su kaçağı kabusu sona eriyor! Üsküdar su kaçağı tespiti hizmetimizle modern cihazlarla kaçağın yerini anında buluyoruz. https://shareyoursocial.com/read-blog/40433

  • Üsküdar kameralı tıkanıklık açma 2024/10/19 21:33

    Üsküdar kameralı tıkanıklık açma Üsküdar’da su tesisatı sorunlarında ilk arayacağım firma Efsane Tesisat olacak. https://www.flexsocialbox.com/read-blog/11454

  • Uyducu Malatya uydu tamiri 2024/10/22 12:40

    Uyducu Malatya uydu tamiri Uyducu Malatya, sorunumuzu hızlıca çözdü, gerçekten işlerini biliyorlar. https://worldnet.asia/blogs/374/Malatya-uyducu-Uydu-Tamiri

  • süpürge filtre temizliği 2024/10/27 14:24

    süpürge filtre temizliği Çekiş gücü kaybolmuştu, servis sonrası toparladı. https://cl-system.jp/question/elektrikli-supurge-tamircisi/

  • süpürge tamir ve bakım 2024/10/29 21:14

    süpürge tamir ve bakım Süpürgemi kısa sürede tamir ettiler, çok memnun kaldım. https://antoinegriezmannclub.com/read-blog/8427