aboutsummaryrefslogtreecommitdiff
path: root/node_modules/ylru/README.md
diff options
context:
space:
mode:
authorruki <waruqi@gmail.com>2018-11-08 00:38:48 +0800
committerruki <waruqi@gmail.com>2018-11-07 21:53:09 +0800
commit26105034da4fcce7ac883c899d781f016559310d (patch)
treec459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/ylru/README.md
parent2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff)
downloadxmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz
xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip
switch to vuepress
Diffstat (limited to 'node_modules/ylru/README.md')
-rw-r--r--node_modules/ylru/README.md91
1 files changed, 91 insertions, 0 deletions
diff --git a/node_modules/ylru/README.md b/node_modules/ylru/README.md
new file mode 100644
index 00000000..219c695f
--- /dev/null
+++ b/node_modules/ylru/README.md
@@ -0,0 +1,91 @@
+# ylru
+
+[![NPM version][npm-image]][npm-url]
+[![build status][travis-image]][travis-url]
+[![Test coverage][codecov-image]][codecov-url]
+[![David deps][david-image]][david-url]
+[![Known Vulnerabilities][snyk-image]][snyk-url]
+[![npm download][download-image]][download-url]
+
+[npm-image]: https://img.shields.io/npm/v/ylru.svg?style=flat-square
+[npm-url]: https://npmjs.org/package/ylru
+[travis-image]: https://img.shields.io/travis/node-modules/ylru.svg?style=flat-square
+[travis-url]: https://travis-ci.org/node-modules/ylru
+[codecov-image]: https://img.shields.io/codecov/c/github/node-modules/ylru.svg?style=flat-square
+[codecov-url]: https://codecov.io/github/node-modules/ylru?branch=master
+[david-image]: https://img.shields.io/david/node-modules/ylru.svg?style=flat-square
+[david-url]: https://david-dm.org/node-modules/ylru
+[snyk-image]: https://snyk.io/test/npm/ylru/badge.svg?style=flat-square
+[snyk-url]: https://snyk.io/test/npm/ylru
+[download-image]: https://img.shields.io/npm/dm/ylru.svg?style=flat-square
+[download-url]: https://npmjs.org/package/ylru
+
+**hashlru inspired**
+
+[hashlru](https://github.com/dominictarr/hashlru) is the **Simpler, faster LRU cache algorithm.**
+Please checkout [algorithm](https://github.com/dominictarr/hashlru#algorithm) and [complexity](https://github.com/dominictarr/hashlru#complexity) on hashlru.
+
+ylru extends some features base on hashlru:
+
+- cache value can be **expired**.
+- cache value can be **empty value**, e.g.: `null`, `undefined`, `''`, `0`
+
+## Usage
+
+```js
+const LRU = require('ylru');
+
+const lru = new LRU(100);
+lru.set(key, value);
+lru.get(key);
+
+// value2 will be expired after 5000ms
+lru.set(key2, value2, { maxAge: 5000 });
+// get key and update expired
+lru.get(key2, { maxAge: 5000 });
+```
+
+### API
+
+## LRU(max) => lru
+
+initialize a lru object.
+
+### lru.get(key[, options]) => value | null
+
+- `{Number} options.maxAge`: update expire time when get, value will become `undefined` after `maxAge` pass.
+
+Returns the value in the cache.
+
+### lru.set(key, value[, options])
+
+- `{Number} options.maxAge`: value will become `undefined` after `maxAge` pass.
+If `maxAge` not set, value will be never expired.
+
+Set the value for key.
+
+### lru.keys()
+
+Get all unexpired cache keys from lru, due to the strategy of ylru, the `keys`' length may greater than `max`.
+
+```js
+const lru = new LRU(3);
+lru.set('key 1', 'value 1');
+lru.set('key 2', 'value 2');
+lru.set('key 3', 'value 3');
+lru.set('key 4', 'value 4');
+
+lru.keys(); // [ 'key 4', 'key 1', 'key 2', 'key 3']
+// cache: {
+// 'key 4': 'value 4',
+// }
+// _cache: {
+// 'key 1': 'value 1',
+// 'key 2': 'value 2',
+// 'key 3': 'value 3',
+// }
+```
+
+## License
+
+[MIT](LICENSE)