| # quick-lru [](https://travis-ci.org/sindresorhus/quick-lru) [](https://coveralls.io/github/sindresorhus/quick-lru?branch=master) |
| |
| > Simple ["Least Recently Used" (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29) |
| |
| Useful when you need to cache something and limit memory usage. |
| |
| Inspired by the [`hashlru` algorithm](https://github.com/dominictarr/hashlru#algorithm), but instead uses [`Map`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map) to support keys of any type, not just strings, and values can be `undefined`. |
| |
| |
| ## Install |
| |
| ``` |
| $ npm install quick-lru |
| ``` |
| |
| |
| ## Usage |
| |
| ```js |
| const QuickLRU = require('quick-lru'); |
| |
| const lru = new QuickLRU({maxSize: 1000}); |
| |
| lru.set('π¦', 'π'); |
| |
| lru.has('π¦'); |
| //=> true |
| |
| lru.get('π¦'); |
| //=> 'π' |
| ``` |
| |
| |
| ## API |
| |
| ### new QuickLRU(options?) |
| |
| Returns a new instance. |
| |
| ### options |
| |
| Type: `object` |
| |
| #### maxSize |
| |
| *Required*<br> |
| Type: `number` |
| |
| The maximum number of items before evicting the least recently used items. |
| |
| ### Instance |
| |
| The instance is [`iterable`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) so you can use it directly in a [`forβ¦of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) loop. |
| |
| Both `key` and `value` can be of any type. |
| |
| #### .set(key, value) |
| |
| Set an item. Returns the instance. |
| |
| #### .get(key) |
| |
| Get an item. |
| |
| #### .has(key) |
| |
| Check if an item exists. |
| |
| #### .peek(key) |
| |
| Get an item without marking it as recently used. |
| |
| #### .delete(key) |
| |
| Delete an item. |
| |
| Returns `true` if the item is removed or `false` if the item doesn't exist. |
| |
| #### .clear() |
| |
| Delete all items. |
| |
| #### .keys() |
| |
| Iterable for all the keys. |
| |
| #### .values() |
| |
| Iterable for all the values. |
| |
| #### .size |
| |
| The stored item count. |