LRU是啥

我不是女神ヾ 2022-09-04 03:46 310阅读 0赞

临下班打算水个帖子再走,突然想起 LRU 缓存来着,我们先来看看啥是LRU

LRU ( Least Recently Used ) 字面意思就是最近使用过的。用代码实现 LRU 注意下面两点

1、新插入的数据应该被放置在最新的位置上等待被访问,如果超过最大存储空间,应该先删除最旧的,再插入

2、如果访问某个已存在的缓存后,该缓存应该被移动到最新的位置上

下面我们直接看代码,使用 ES6 Map 实现应该是最好的,也是最简单易懂的

  1. class LRU {
  2. constructor() {
  3. this.maxCount = 3;
  4. this.cache = new Map();
  5. }
  6. get(key){
  7. if (!this.cache.has(key)){
  8. return -1;
  9. }
  10. const val = this.cache.get(key);
  11. this.cache.delete(key);
  12. this.cache.set(key, val);
  13. return val;
  14. }
  15. set(key, val){
  16. if (this.cache.has(key)){
  17. this.cache.delete(key)
  18. }
  19. if (this.cache.size === this.maxCount) {
  20. this.cache.delete(this.cache.keys().next().value);
  21. }
  22. this.cache.set(key, val)
  23. }
  24. }
  25. const lru = new LRU();
  26. lru.set('a', 1)
  27. lru.set('b', 2)
  28. lru.set('c', 3)
  29. console.log(lru); // [1, 2, 3]
  30. lru.set('d', 4)
  31. console.log(lru); // [2, 3, 4]
  32. lru.get('b')
  33. console.log(lru); // [3, 4, 2]
  34. console.log(lru.get('e')) -1

发表评论

表情:
评论列表 (有 0 条评论,310人围观)

还没有评论,来说两句吧...

相关阅读

    相关 OKR

    【什么是OKR体系】 OKR体系的全称是Objectives & Key Results,即目标与关键成果。所谓OKR,O = Objective 可以理解为企业目标,K

    相关 CLB

    CLB是 Cloud Load Balancer 的缩写,是指在云端的负载均衡服务。负载均衡是指将网络流量分发到多台服务器上的技术,目的是提高网站的可用性和性能。通常情况下,一

    相关 chatAPI

    ChatAPI是一个js插件。通过加载ChatAPI JS,可以在网站上实现在线群聊的功能。你可以看到当前在你网站上的实际在线用户,还可以记录每个用户在网站的停留总时间。 使

    相关 中断

    一、中断的描述 > 中断是指计算机运行过程中,出现`某些意外情况需主机干预`时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。

    相关 LRU

    临下班打算水个帖子再走,突然想起 LRU 缓存来着,我们先来看看啥是LRU > LRU ( Least Recently Used ) 字面意思就是最近使用过的。用代码实现

    相关 Ajax

    Ajax扫盲系列 1.Ajax是神马鬼 : ajax,(PS:这家伙读“阿甲克斯”,原谅我把这么高大上的英文就这么给汉语化了,毕竟好读,因为本小吊之前不会读这个真是

    相关 Maven

    Maven是专门用于构建和管理Java相关项目的工具。 Maven是意第绪语,依地语言(犹太人使用的国际语),表示专家的意思。 所以用了Maven管理项目,你就是专家啦,哈