Skip to content

Size limited queue based on LRU algorithm

License

Notifications You must be signed in to change notification settings

medikoo/lru-queue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build status Windows status Transpilation status npm version

lru-queue

Size limited queue based on LRU algorithm

Originally derived from memoizee package.

It's low-level utility meant to be used internally within cache algorithms. It backs up max functionality in memoizee project.

Installation

$ npm install lru-queue

To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: Browserify, Webmake or Webpack

Usage

Create queue, and provide a limit

var lruQueue = require("lru-queue");
var queue = lruQueue(3); // limit size to 3

Each queue exposes three methods:

queue.hit(id)

Registers hit for given id (must be plain string).

queue.hit("raz"); // size: 1

If hit doesn't remove any old item from list it returns undefined, otherwise removed id is returned.

queue.hit("dwa"); // undefined, size: 2
queue.hit("trzy"); // undefined, size: 3 (at max)
queue.hit("raz"); // undefined, size: 3 (at max)
queue.hit("dwa"); // undefined, size: 3 (at max)
queue.hit("cztery"); // 'trzy', size: 3 (at max)

queue.delete(id);

id's can be cleared from queue externally

queue.delete("raz"); // size: 2
queue.delete("cztery"); // size: 1

queue.clear();

Resets the queue

queue.clear(); // size: 0

Tests

$ npm test

Security contact information

To report a security vulnerability, please use the Tidelift security contact. Tidelift will coordinate the fix and disclosure.

About

Size limited queue based on LRU algorithm

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published