All Projects → dabroek → node-cache-manager-redis-store

dabroek / node-cache-manager-redis-store

Licence: MIT license
Redis store for node-cache-manager using node_redis.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to node-cache-manager-redis-store

node-cache-manager-ioredis
Redis store for node-cache-manager using IORedis.
Stars: ✭ 47 (-59.83%)
Mutual labels:  redis-client, cache-manager, redis-store
redis-patterns-console
An interactive (and reactive) console to try and go into the deep of Redis and its patterns!
Stars: ✭ 22 (-81.2%)
Mutual labels:  redis-client
Go Rejson
Golang client for redislabs' ReJSON module with support for multilple redis clients (redigo, go-redis)
Stars: ✭ 164 (+40.17%)
Mutual labels:  redis-client
lib mysqludf redis
Provides Mysql UDF commands to synchronize data from Mysql to Redis.
Stars: ✭ 20 (-82.91%)
Mutual labels:  redis-client
Servicestack.redis
.NET's leading C# Redis Client
Stars: ✭ 2,236 (+1811.11%)
Mutual labels:  redis-client
aedis
An async redis client designed for performance and scalability
Stars: ✭ 118 (+0.85%)
Mutual labels:  redis-client
Redisearch Py
RediSearch python client
Stars: ✭ 152 (+29.91%)
Mutual labels:  redis-client
cache
🗃 Generic cache use and cache manage. Provide a unified usage API by packaging various commonly used drivers. Support File, Memory, Redis, Memcached and more. Go 通用的缓存使用库,通过包装各种常用的驱动,来提供统一的使用API,便于使用。
Stars: ✭ 146 (+24.79%)
Mutual labels:  cache-manager
redis-rs
Redis client for Rust.
Stars: ✭ 25 (-78.63%)
Mutual labels:  redis-client
RedisDrive
This is a.Net redis integrated driver to support a single instance, cluster, sentinel and other modes of data manipulation 这是一个.net 的redis集成驱动,支持单实例、云集群、哨兵等模式的数据操作
Stars: ✭ 19 (-83.76%)
Mutual labels:  redis-client
Collectd
The system statistics collection daemon. Please send Pull Requests here!
Stars: ✭ 2,700 (+2207.69%)
Mutual labels:  redis-client
Cachingframework.redis
Distributed caching based on StackExchange.Redis and Redis. Includes support for tagging and is cluster-compatible.
Stars: ✭ 209 (+78.63%)
Mutual labels:  redis-client
redisbloom-go
Go Client for RedisBloom probabilistic module
Stars: ✭ 74 (-36.75%)
Mutual labels:  redis-client
Redis3m
A C++ Redis client
Stars: ✭ 173 (+47.86%)
Mutual labels:  redis-client
scala-redis
A scala library for connecting to a redis server, or a cluster of redis nodes using consistent hashing on the client side.
Stars: ✭ 1,016 (+768.38%)
Mutual labels:  redis-client
Acl
Server framework and network components written by C/C++ for Linux, Mac, FreeBSD, Solaris(x86), Windows, Android, IOS
Stars: ✭ 2,113 (+1705.98%)
Mutual labels:  redis-client
Egg Redis
redis plugin for egg
Stars: ✭ 234 (+100%)
Mutual labels:  redis-client
MythRedisClient
🏎️使用JavaFx做的Redis客户端,资源消耗略大 200-300m,想复用核心代码做成web端,然后浏览器操作,开发起来和跑起来也快
Stars: ✭ 26 (-77.78%)
Mutual labels:  redis-client
The-Overly-Complicated-Random-Number-Generator
An Overly Complex Random Number Generator, created to demystify how containers work.
Stars: ✭ 25 (-78.63%)
Mutual labels:  redis-client
node-redis
A high-performance Node.js Redis client.
Stars: ✭ 15,783 (+13389.74%)
Mutual labels:  redis-client

npm version GitHub issues codecov

Redis store for node cache manager

Redis cache store for 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. 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

npm install cache-manager-redis-store --save

or

yarn add cache-manager-redis-store

Usage Examples

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

Single store

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

var config = {
  socket: {
    host: 'localhost', // default value
    port: 6379, // default value
  },
  password: 'XXXXX',
  db: 0,
  ttl: 600
};

var redisCache = cacheManager.caching({
  store: await redisStore(config),
});

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

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

var ttl = 5;

await redisCache.set('foo', 'bar', { ttl: ttl });

// You can use either a Promise...
var result = await redisCache.get('foo');
console.log(result);

// ...or a callback
redisCache.get('foo', (err, result) => {
  if (err) {
    // handle error here
  }
  console.log(result);
});

// >> 'bar'
console.log(await redisCache.del('foo'));
// >> 1

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

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

var redisCache = cacheManager.caching({ store: await redisStore({ ...config, 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
await multiCache.set('foo2', 'bar2', { ttl: ttl });
// Fetches from highest priority cache that has the key
var result = await multiCache.get('foo2');
console.log(result);
// >> 'bar2'

// Delete from all caches
await 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.

License

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].