cache-lru-high

1.0.1 • Public • Published

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

Show your support

Give a ⭐️ if this project helped you!


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

Readme

Keywords

Package Sidebar

Install

npm i cache-lru-high

Weekly Downloads

1

Version

1.0.1

License

MIT

Unpacked Size

167 kB

Total Files

11

Last publish

Collaborators

  • cui_xiaorui