# cache-manager-redis-store

> Redis store for node-cache-manager

Latest version **3.0.1** (published 2022-10-16) · MIT license · 0 weekly downloads

## Install

```sh
npm install cache-manager-redis-store
pnpm add cache-manager-redis-store
yarn add cache-manager-redis-store
bun add cache-manager-redis-store
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.0.1 |
| Published | 2022-10-16 |
| First published | 2017-05-02 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >= 16.18.0 |
| Dependencies | 1 |
| Unpacked size | 36.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 167 |
| Author | Matthijs Dabroek |
| Maintainers | dabroek |

## Links

- npm: https://www.npmjs.com/package/cache-manager-redis-store
- Repository: https://github.com/dabroek/node-cache-manager-redis-store
- Homepage: https://github.com/dabroek/node-cache-manager-redis-store#readme
- Issues: https://github.com/dabroek/node-cache-manager-redis-store/issues
- npm.io page: https://npm.io/package/cache-manager-redis-store

## Dependencies (1)

- [redis](https://npm.io/package/redis.md) ^4.3.1

## Recent versions

- 3.0.1 (latest) — 2022-10-16
- 3.0.0 — 2022-10-15
- 2.0.0 — 2020-02-13
- 1.5.0 — 2018-06-11
- 1.4.0 — 2018-03-03
- 1.3.0 — 2017-12-15
- 1.2.0 — 2017-05-02
- 1.1.0 — 2017-05-02
- 1.0.1 — 2017-05-02
- 1.0.0 — 2017-05-02

## README

[![npm version](https://badge.fury.io/js/cache-manager-redis-store.svg)](https://badge.fury.io/js/cache-manager-redis-store)
[![GitHub issues](https://img.shields.io/github/issues/dabroek/node-cache-manager-redis-store.svg)](https://github.com/dabroek/node-cache-manager-redis-store/issues)

Redis store for node cache manager
==================================

Redis cache store for [node-cache-manager](https://github.com/BryanDonovan/node-cache-manager). 

How is this package different from `node-cache-manager-redis`?
----------------------------------------------------------------------------------
This is a **completely different version** than the earlier [node-cache-manager-redis](https://github.com/dial-once/node-cache-manager-redis). This package does not use `redis-pool` which is unnecessary and not actively maintained.
 
This package aims to provide **the most simple wrapper possible** by just passing the configuration to the underlying `node_redis` package.

Installation
------------

```sh
npm install cache-manager-redis-store --save
```
or
```sh
yarn add cache-manager-redis-store
```

Usage Examples
--------------

See examples below on how to implement the Redis cache store.

### Single store

```js
var cacheManager = require('cache-manager');
var redisStore = require('cache-manager-redis-store');

var redisCache = cacheManager.caching({
  store: redisStore,
  host: 'localhost', // default value
  port: 6379, // default value
  auth_pass: 'XXXXX',
  db: 0,
  ttl: 600
});

// listen for redis connection error event
var redisClient = redisCache.store.getClient();

redisClient.on('error', (error) => {
  // handle error here
  console.log(error);
});

var ttl = 5;

redisCache.set('foo', 'bar', { ttl: ttl }, (err) => {
  if (err) {
    throw err;
  }

  redisCache.get('foo', (err, result) => {
    console.log(result);
    // >> 'bar'
    redisCache.del('foo', (err) => {
    });
  });
});

function getUser(id, cb) {
  setTimeout(() => {
    console.log("Returning user from slow database.");
    cb(null, { id: id, name: 'Bob' });
  }, 100);
}

var userId = 123;
var key = `user_${userId}`;

// Note: ttl is optional in wrap()
redisCache.wrap(key, (cb) => {
  getUser(userId, cb);
}, { ttl: ttl }, (err, user) => {
  console.log(user);

  // Second time fetches user from redisCache
  redisCache
    .wrap(key, () => getUser(userId))
    .then(console.log)
    .catch(err => {
      // handle error
    });
});
```

### Multi-store

```js
var cacheManager = require('cache-manager');
var redisStore = require('cache-manager-redis-store');

var redisCache = cacheManager.caching({ store: redisStore, db: 0, ttl: 600 });
var memoryCache = cacheManager.caching({ store: 'memory', max: 100, ttl: 60 });

var multiCache = cacheManager.multiCaching([memoryCache, redisCache]);

var userId2 = 456;
var key2 = `user_${userId2}`;

// Set value in all caches
multiCache.set('foo2', 'bar2', { ttl: ttl }, (err) => {
  if (err) {
    throw err;
  }

  // Fetches from highest priority cache that has the key
  multiCache.get('foo2', (err, result) => {
    console.log(result);

    // Delete from all caches
    multiCache.del('foo2');
  });
});

// Note: ttl is optional in wrap
multiCache.wrap(key2, (cb) => {
  getUser(userId2, cb);
}, (err, user) => {
  console.log(user);

  // Second time fetches user from memoryCache, since it's highest priority.
  // If the data expires in the memory cache, the next fetch would pull it from
  // the 'someOtherCache', and set the data in memory again.
  multiCache.wrap(key2, (cb) => {
    getUser(userId2, cb);
  }, (err, user) => {
    console.log(user);
  });
});
```

Contribution
------------

Want to help improve this package? We take [pull requests](https://github.com/dabroek/node-cache-manager-redis-store/pulls).


License
-------

The `node-cache-manager-redis-store` is licensed under the MIT license.

---
_Source: https://npm.io/package/cache-manager-redis-store · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
