Skip to content

s3ththompson/nanolru

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nanolru stability

npm version build status downloads js-standard-style

A simple LRU cache supporting O(1) set, get and eviction of old keys

Fork of lru to remove dependency on events.

Installation

$ npm install nanolru

Example

var LRU = require("nanolru");

var cache = new LRU(2)

cache.set("foo", "bar");
cache.get("foo"); //=> bar

cache.set("foo2", "bar2");
cache.get("foo2"); //=> bar2

cache.set("foo3", "bar3"); // "foo" evicted
cache.get("foo3");         // => "bar3"
cache.remove("foo2")       // => "bar2"
cache.remove("foo4")       // => undefined
cache.length               // => 1
cache.keys                 // => ["foo3"]

cache.clear()
cache.length               // => 0
cache.keys                 // => []

API

LRU( length )

Create a new LRU cache that stores length elements before evicting the least recently used. Optionally you can pass an options map with additional options:

{
  max: maxElementsToStore,
  maxAge: maxAgeInMilliseconds
}

If you pass maxAge items will be evicted if they are older than maxAge when you access them.

Returns: the newly created LRU cache

Properties

.length

The number of keys currently in the cache.

.keys

Array of all the keys currently in the cache.

Methods

.set( key, value )

Set the value of the key and mark the key as most recently used.

Returns: value

.get( key )

Query the value of the key and mark the key as most recently used.

Returns: value of key if found; undefined otherwise.

.peek( key )

Query the value of the key without marking the key as most recently used.

Returns: value of key if found; undefined otherwise.

.remove( key )

Remove the value from the cache.

Returns: value of key if found; undefined otherwise.

.clear()

Clear the cache.

Credits

Original library by Chris O"Hara. A big thanks to Dusty Leary who finished the library.

License

MIT

About

A simple LRU cache

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%