LRUCache.js is a lightweight and efficient Least Recently Used (LRU) cache implementation for JavaScript.
It stores a fixed number of items, automatically evicting the least recently used entry when the cache reaches its limit.
Optional per-item TTL (time-to-live) support allows for automatic expiration of stale entries.
- LRU eviction — least recently used entries are removed first
- Optional TTL — each entry can expire automatically
- Fast lookups, insertions, and deletions using
Map - Size-limited — configurable maximum number of entries
- Utility methods for keys, values, and cache cleanup
- Zero dependencies — works in Node.js and browsers
Install via npm:
npm install @rawify/lrucacheOr with yarn:
yarn add @rawify/lrucacheOr clone the repository:
git clone https://github.com/rawify/LRUCache.jsInclude the lrucache.min.js file in your project:
<script src="path/to/lrucache.min.js"></script>Or in a Node.js / ES module project:
const LRUCache = require('@rawify/lrucache');
// or
import LRUCache from '@rawify/lrucache';const cache = new LRUCache(3); // limit = 3 entriesAdds or updates a cache entry.
ttlMs is optional; if given, the entry expires after ttlMs milliseconds.
cache.set('a', 1);
cache.set('b', 2, 1000); // expires after 1sRetrieves the value for key and marks it as most recently used.
Returns undefined if the key is not found or has expired.
cache.get('a'); // 1Checks if the key exists and is not expired, and marks it as most recently used.
cache.has('a'); // trueRemoves the entry for key.
cache.delete('a');Removes all entries.
cache.clear();Returns the number of non-expired entries.
cache.size(); // 2Returns an array of keys for non-expired entries.
cache.keys(); // ['b', 'c']Returns an array of values for non-expired entries.
cache.values(); // [2, 3]Removes expired entries and returns the number of removed keys.
cache.cleanup(); // 1const cache = new LRUCache(2);
cache.set('x', 42);
cache.set('y', 99);
cache.get('x'); // access x so it's most recent
cache.set('z', 123); // y gets evicted because it's least recent
console.log(cache.keys()); // ['x', 'z']Like all my libraries, LRUCache.js is written to minimize size after compression with Google Closure Compiler in advanced mode. The code style is optimized to maximize compressibility. If you extend the library, please preserve this style.
After cloning the Git repository run:
npm install
npm run build
Copyright (c) 2025, Robert Eisele Licensed under the MIT license.