An open API service indexing awesome lists of open source software.

https://github.com/pasupulaphani/node-cache-redis

Redis cache ready to scale with node-pool, semaphore support
https://github.com/pasupulaphani/node-cache-redis

cache connection-pooling generic-pool node-pool redis redis-cache scalable scale semaphore serialization store

Last synced: 11 months ago
JSON representation

Redis cache ready to scale with node-pool, semaphore support

Awesome Lists containing this project

README

          

[![npm version](https://badge.fury.io/js/node-cache-redis.svg)](https://badge.fury.io/js/node-cache-redis)
[![Build Status](https://travis-ci.org/pasupulaphani/node-cache-redis.svg?branch=master)](https://travis-ci.org/pasupulaphani/node-cache-redis)
[![Coverage Status](https://coveralls.io/repos/github/pasupulaphani/node-cache-redis/badge.svg?branch=master)](https://coveralls.io/github/pasupulaphani/node-cache-redis?branch=master)
[![Patreon donate button](https://img.shields.io/badge/patreon-donate-yellow.svg)](http://patreon.com/phaninder 'Donate to this project using Patreon')

# node-cache-redis [![See on Github](https://github.com/themes/tactile/images/octocat-icon.png)](https://github.com/pasupulaphani/node-cache-redis)

Simplistic node redis cache ready can scale with generic-pool support

> Cache Early; Cache Often

### Documentation

- [TSDOC pages](https://pasupulaphani.github.io/node-cache-redis/index.html)

## Prerequisites

- `node >= 8` This module requires nodejs v8 or later
- `redis >= 4` This module requires redis v4 or above as it has dependencies on `UNLINK` and `redis.replicate_commands()` for pattern deletion.

## Featuring

- Works out of the box
- Easy to scale with low friction during locking and purging
- Designed for multithread environment
- Logging can be customized
- Flexible Expiration: Through configuration, you can set a default expiration mode and time for each layer.
- Statistics / Counters: Gather statistical information.
- Modular Design

## Migration

[4.0.0](https://github.com/pasupulaphani/node-cache-redis/releases/tag/v4.0.0) contains braking change. See
[CHANGELOG.md](https://github.com/pasupulaphani/node-cache-redis/blob/master/CHANGELOG.md)

### Getting started

```
npm install node-cache-redis
```

#### Usage

```
const { init, set, get } = require("node-cache-redis");
init();

// set
await set("key", { "hello": "world" })
const value = await get("key")
```

#### API

- init([options]) [TSDOC init](https://pasupulaphani.github.io/node-cache-redis/index.html#init)

#### `options` object properties



Name
Type
Description




name

string


Name your store





redisOptions

object


opts from node_redis#options-object-properties





poolOptions

object


opts from node-pool#createpool





logger

object


Inject your custom logger





ttlInSeconds

number


Default time to live for stored values




### Run tests

##### Using docker

```
bash test.sh
```

##### Run manually

```
docker run -it -p 6379:6379 redis
npm t
```

##### Todo:

- Serialization: Used to serialize values in distributed scenarios and configuration.
- Synchronized locking with a semaphore

## 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:

- [Phaninder](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?

[![Patreon donate button](https://img.shields.io/badge/patreon-donate-yellow.svg)](http://patreon.com/phaninder 'Donate to this project using Patreon')
[![Flattr donate button](https://img.shields.io/badge/flattr-donate-yellow.svg)](https://flattr.com/profile/pasupulaphani 'Donate to this project using Flattr')

### Contributors

Amazing people who have contributed code to this project:

- Ron Yang
- [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.

---