Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/node-modules/ylru
Add "expire", "allow set empty value" extends on hashlru
https://github.com/node-modules/ylru
Last synced: 3 months ago
JSON representation
Add "expire", "allow set empty value" extends on hashlru
- Host: GitHub
- URL: https://github.com/node-modules/ylru
- Owner: node-modules
- License: mit
- Fork: true (dominictarr/hashlru)
- Created: 2016-12-29T03:42:03.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2024-03-28T03:58:18.000Z (11 months ago)
- Last Synced: 2024-04-14T13:37:55.411Z (10 months ago)
- Language: JavaScript
- Homepage:
- Size: 46.9 KB
- Stars: 40
- Watchers: 15
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: History.md
- License: LICENSE
Awesome Lists containing this project
- awesome-nodejs - ylru - Add "expire", "allow set empty value" extends on hashlru. ![](https://img.shields.io/github/stars/node-modules/ylru.svg?style=social&label=Star) (Repository / Cache)
README
# ylru
[![NPM version][npm-image]][npm-url]
[![Node.js CI](https://github.com/node-modules/ylru/actions/workflows/nodejs.yml/badge.svg)](https://github.com/node-modules/ylru/actions/workflows/nodejs.yml)
[![Test coverage][codecov-image]][codecov-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
[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
[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
```ts
import { LRU } from '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
## new 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`.
```ts
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',
// }
```### lru.reset()
reset a lru object.
```ts
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.reset();
// cache: {
// }
// _cache: {
// }lru.keys().length === 0;
```## License
[MIT](LICENSE)
## Contributors
|[
fengmk2](https://github.com/fengmk2)
|[
dominictarr](https://github.com/dominictarr)
|[
dead-horse](https://github.com/dead-horse)
|[
thonatos](https://github.com/thonatos)
|[
mourner](https://github.com/mourner)
|[
semantic-release-bot](https://github.com/semantic-release-bot)
|
| :---: | :---: | :---: | :---: | :---: | :---: |
[
vagusX](https://github.com/vagusX)
|[
RaoHai](https://github.com/RaoHai)This project follows the git-contributor [spec](https://github.com/xudafeng/git-contributor), auto updated at `Thu Mar 28 2024 11:52:18 GMT+0800`.