You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

185 lines
2.7 KiB

# Tiny LRU
Least Recently Used cache for Client or Server.
[![build status](https://secure.travis-ci.org/avoidwork/tiny-lru.svg)](http://travis-ci.org/avoidwork/tiny-lru)
```javascript
const cache = lru(max, ttl = 0);
```
Lodash provides a `memoize` function with a cache that can be swapped out as long as it implements the right interface.
See the [lodash docs](https://lodash.com/docs#memoize) for more on `memoize`.
#### Example
```javascript
_.memoize.Cache = lru().constructor;
const memoized = _.memoize(myFunc);
memoized.cache.max = 10;
```
## clear
### Method
Clears the contents of the cache
return {Object} LRU instance
**Example**
```javascript
cache.clear();
```
## delete
### Method
Removes item from cache
param {String} key Item key
return {Object} LRU instance
**Example**
```javascript
cache.delete("myKey");
```
## evict
### Method
Evicts the least recently used item from cache
return {Object} LRU instance
**Example**
```javascript
cache.evict();
```
## first
### Property
Item in "first" or "bottom" position
**Example**
```javascript
const cache = lru();
cache.first; // null - it's a new cache!
```
## get
### Method
Gets cached item and moves it to the front
param {String} key Item key
return {Mixed} Undefined or Item value
**Example**
```javascript
const item = cache.get("myKey");
```
## keys
### Method
Returns an `Array` of cache item keys.
return {Array} Array of keys
**Example**
```javascript
console.log(cache.keys());
```
## max
### Property
Max items to hold in cache (1000)
**Example**
```javascript
const cache = lru(500);
cache.max; // 500
```
## last
### Property
Item in "last" or "top" position
**Example**
```javascript
const cache = lru();
cache.last; // null - it's a new cache!
```
## remove
### Method
(Deprecated) Removes item from cache
param {String} key Item key
return {Object} LRU instance
**Example**
```javascript
cache.remove("myKey");
```
## set
### Method
Sets item in cache as `first`
param {String} key Item key
param {Mixed} value Item value
return {Object} LRU instance
**Example**
```javascript
cache.set("myKey", {prop: true});
```
## size
### Property
Number of items in cache
**Example**
```javascript
const cache = lru();
cache.size; // 0 - it's a new cache!
```
## ttl
### Property
Milliseconds an item will remain in cache; lazy expiration upon next `get()` of an item
**Example**
```javascript
const cache = lru();
cache.ttl = 3e4;
```
## License
Copyright (c) 2019 Jason Mulligan
Licensed under the BSD-3 license.