node-cache-redis-fork
Version:
Simplistic node redis cache ready can scale with generic-pool support
160 lines (121 loc) • 6.01 kB
Markdown
[](https://badge.fury.io/js/node-cache-redis)
[](https://travis-ci.org/pasupulaphani/node-cache-redis)
[](https://coveralls.io/github/pasupulaphani/node-cache-redis?branch=master)
[](https://www.versioneye.com/user/projects/583c520dd2d44d003fb603be)
[](https://gratipay.com/simple-redis-cache/)
# node-cache-redis [](https://github.com/pasupulaphani/node-cache-redis)
Simplistic node redis cache ready can scale with generic-pool support
> Cache Early; Cache Often
## Prerequisites
```node >= 4``` This module requires nodejs v4 or above as it has dependencies on es6 components such as Map, Set, Promise etc.
```redis >= 4``` This module requires redis v4 or above as it has dependencies on `UNLINK` and `redis.replicate_commands()` for pattern deletion.
## Featuring
- Out of the box default configuration (but fully configurable)
- Scalable easily, less friction during locking and purging
- Design for multithread environment
- Extensible Logging
- Flexible Expiration: Through configuration, you can set a default expiration mode and time for each layer.
- Statistics / Counters: Gather statistical information and track caching operations in Performance Monitor as needed.
- Modular Design: Lib comes in many different packages, separating the features and dependencies.
##### Todo:
- Serialization: Used to serialize values in distributed scenarios, can be configured.
- Synchronized locking with a semaphore
- Provides both sync and async API
### Getting started
```
npm install node-cache-redis
```
#### Usage
```
const RedisCache = require("node-cache-redis");
const cache = new RedisCache();
// set
cache.set("key", "value")
.then(function () {
return cache.get("key");
})
.then(function (value) {
assert.eql(value, "value")
});
```
#### API
- RedisCache([options])
#### `options` object properties
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>name</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last">
<p>Name your store</p>
</td>
</tr>
<tr>
<td class="name"><code>redisOptions</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last">
<p>opts from <a href="https://github.com/NodeRedis/node_redis#options-object-properties">node_redis#options-object-properties</a></p>
</td>
</tr>
<tr>
<td class="name"><code>poolOptions</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last">
<p>opts from <a href="https://github.com/coopernurse/node-pool#createpool">node-pool#createpool</a></p>
</td>
</tr>
<tr>
<td class="name"><code>logger</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="description last">
<p>Inject your custom logger</p>
</td>
</tr>
<tr>
<td class="name"><code>ttlInSeconds</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">
<p>Default time to live for stored values</p>
</td>
</tr>
</tbody>
</table>
### Run tests
bash test.sh
## Contribute
[Discover how you can contribute by heading on over to the `CONTRIBUTING.md` file.](https://github.com/pasupulaphani/node-cache-redis/blob/master/CONTRIBUTING.md)
## Backers
### Maintainers
These amazing people are maintaining this project:
* [Phani](https://github.com/pasupulaphani) — [view contributions](https://github.com/pasupulaphani/node-cache-redis/commits?author=pasupulaphani)
### Sponsors
No sponsors yet! Will you be the first?
[](http://patreon.com/phaninder "Donate to this project using Patreon")
[](https://gratipay.com/~pasupulaphani/ "Donate weekly to this project using Gratipay")
[](https://flattr.com/profile/pasupulaphani "Donate to this project using Flattr")
<!-- [](https://phaninder.com/paypal "Donate to this project using Paypal") -->
<!-- [](https://phaninder.com/bitcoin "Donate once-off to this project using Bitcoin") -->
<!-- [](https://phaninder.com/wishlist "Buy an item on our wishlist for us") -->
<a href='https://pledgie.com/campaigns/33095'><img alt='Click here to lend your support to: simple-node-redis-cache and make a donation at pledgie.com !' src='https://pledgie.com/campaigns/33095.png?skin_name=chrome' border='0' ></a>
### Contributors
These amazing people have contributed code to this project:
* [Oliver Brooks](https://github.com/oliverbrooks)
Feel free to make changes. Please see the [Contributors' Guide](https://github.com/pasupulaphani/node-cache-redis/blob/master/CONTRIBUTING.md) for more information on contributing to the documentation.
---