/cache-by-redis

A simple promise interface cacher based on ioredis.

Primary LanguageJavaScript

cache-redis-fg

A simple interface cacher based on ioredis.

Getting Start

NPM

Installation

npm i -S cache-redis-fg

Usage

Table of Contents

Parameters

1. 参数opt, redis配置

  • @param {object} opt 数据库配置
  • @param {number} opt.prefix 设置缓存的前缀
  • @param {number} opt.expire 设置的失效时间, 单位s
  • @param {object} opt.reids redis配置
  • @param {String} opt.reids.host redis host配置
  • @param {String} opt.reids.port redis port配置
  • @param {String} opt.reids.db redis 存储db配置

new Cache(opt);

2. 参数payload, 缓存参数

  • @param {object} payload
  • @param {string} payload.key 要查找的key
  • @param {function} payload.executor 如果未击中,要执行的

返回

  • @return {Promise.} 缓存中数据(击中) 或executor返回数据(未击中)

    Usage

    get

    example that result of Promise instance

    const getShopes = (type) => {
      let result;
      switch (type) {
        case 1:
          result = Promise.reject(new Error('bad params'));
          break;
        case 2:
          result = Promise.resolve(undefined);
          break;
        case 3:
          result = Promise.resolve(
            {
              obj1: ['shop01', 'shop02', 1, 2],
              obj2: 2,
            },
          );
          break;
        default:
          result = Promise.resolve('sucessful');
      }
      return result;
    };
    

    support deafeat cache in redis 12

    const cache = new Cacher();
      const payload = {
        key: 'getShopes',
        executor: getShopes.bind(null, 0),
      };
    await cache.get(payload);
    

    support redis config

    const opt1 = {
        redis: {
          db: '12',
        },
        prefix: 'testCache_',
        expire: 100,
      };
    const cache = new Cacher(opt1);
      const payload = {
        key: 'getShopes',
        executor: getShopes.bind(null, 0),
      };
    await cache.get(payload);
    

    suppose complex object

      const cache = new Cacher();
      const payload = {
        key: 'getShopes',
        executor: getShopes.bind(null, 3),
      };
      await cache.get(payload);
    

    delete

    suppose remove the key in redis

      const cache = new Cache();
      cache.delete(key);
    

    attention

    1. if you Promise instance return result is undefined, the result would not to cache.
    2. if you expire time config < 0, would config expire time is 5s.