🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

cache-lru-high

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cache-lru-high

使用 hashMap + double linked list 实现所有操作时间复杂度为 O(1) 的 LRU

latest
Source
npmnpm
Version
1.0.1
Version published
Maintainers
1
Created
Source

Welcome to cache-LRU 👋

Version

高效的缓存淘汰策略(LRU)

使用 hashMap + double linked list 实现所有操作时间复杂度为 O(1) 的 LRU

Install

npm install cache-lru-high

API

new CacheLRU(maxSize:number = 10)

构造函数 maxSize 默认值为 10

set(key:string,value:any)

设置缓存的数据

get(key:string)

获取缓存的数据

keys()

同 array.keys()

values()

同 array.values()

forEach(callback:Function)

按照缓存的顺序遍历

Example

let lru = new CacheLRU();

lru.set("1", { value: 1 });
lru.set("2", { value: 2 });
lru.set("3", { value: 3 });
lru.set("4", { value: 4 });
lru.set("5", { value: 5 });

//[ '5', { value: 5 } ] [ '4', { value: 4 } ] [ '3', { value: 3 } ] [ '2', { value: 2 } ] [ '1', { value: 1 } ]
console.log(...lru.entries());
//设置最大的缓存数
//最早的数据被抛弃掉
let lru = new CacheLRU(5);
lru.set("1", { value: 1 });
lru.set("2", { value: 2 });
lru.set("3", { value: 3 });
lru.set("4", { value: 4 });
lru.set("5", { value: 5 });
lru.set("6", { value: 6 });

// {value:6},{value:5},{value:4},{value:3},{value:2},
console.log(...lru.values());
 // get 之后数据被放到最前面
  let lru = new CacheLRU();
  lru.set("1", { value: 1 });
  lru.set("2", { value: 2 });
  lru.set("3", { value: 3 });
  lru.set("4", { value: 4 });
  lru.set("5", { value: 5 });

  lru.get("2");
  // 2,5,4,3,1
  console.log(...lru.keys());
}
// forEach()
let lru = new CacheLRU();
lru.set("1", { value: 1 });
lru.set("2", { value: 2 });
lru.set("3", { value: 3 });
lru.set("4", { value: 4 });
lru.set("5", { value: 5 });

lru.get("2");
lru.forEach(node => {
  console.log(node.key);
});

Run tests

npm run test

Author

👤 cuixiaorui

  • Github: @cuixiaorui

Show your support

Give a ⭐️ if this project helped you!

This README was generated with ❤️ by readme-md-generator

Keywords

cache

FAQs

Package last updated on 27 Jul 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts