前端 JS 经典:LRU 缓存算法

打印 上一主题 下一主题

主题 504|帖子 504|积分 1512

媒介:什么是 LRU 呢,单词全拼 Least Recently Used,意思是最久未使用。这个算法是做缓存用的,比如,你要缓存一组数据,你要划分缓存块出来,因为不大概每个数据都做缓存,那么划出来的这个缓存块,就要服从 LRU 缓存算法。比如你画出来了 4 个缓存块,你已经存了 4 个缓存数据,那么新的数据还要缓存进去,就必要删除之前的一个缓存,那么删除哪个呢,就是最久未使用的谁人数据,算法实现如下:界说一个缓存内,用 map 来装键值对。# 代表的私有属性。has 判断是否有缓存数据,get 获取数据后,数据要酿成最新使用的数据,要删的时间,不会删它,set 存入新数据,然后删除最久未使用的数据。
  1. class LRUCache {
  2.   #map;
  3.   #length;
  4.   constructor(len) {
  5.     this.#map = new Map();
  6.     this.#length = len;
  7.   }
  8.   has(key) {
  9.     return this.#map.has(key);
  10.   }
  11.   get(key) {
  12.     if (this.has(key)) return null;
  13.     const value = this.#map.get(key);
  14.     this.#map.delete(key);
  15.     this.#map.set(key, value);
  16.     return value;
  17.   }
  18.   set(key, value) {
  19.     if (this.has(key)) {
  20.       this.#map.delete(key);
  21.     }
  22.     this.#map.set(key, value);
  23.     if (this.#map.size > this.#length) {
  24.       this.#map.delete(this.#map.keys().next().value);
  25.     }
  26.   }
  27. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

写过一篇

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表