medikoo / lru-queue

Size limited queue based on LRU algorithm

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

License:ISC License


Languages

Language:JavaScript 100.0%