npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

node-cache-9

v1.1.7

Published

an easy-to-use caching module for clustered servers

Downloads

49

Readme

node-cache-9

node version NPM version build status Test coverage David deps npm download

This is an easy-to-use data caching module that allows anyone to simply put data into the cache without additional operations.

中文说明

Homepage

Prerequisites

  • node >=8
  • redis >=2.8.0

Install

npm i node-cache-9

Usage

'use strict';
const cache9 = require('node-cache-9');
const config = {
  xxx: {
    class: 'memory',
    ttl: 5 * 60,
  },
};
const options = { ttl: 10 * 60 };
const cache = cache9.init(config);

(async function() {
  // get data from raw or cache
  const data = await cache.xxx.get('cachekey', async () => {
    // get your data and return it here
    return 'something';
  }, options);
  // update expiration time
  cache.xxx.renew('cachekey', options);
  // clear the cache
  cache.xxx.clear('cachekey');
  console.log(data);

  // get multiply datas from raw or cache
  const datas = await cache.xxx.getM('mainKey', [ 'objA', 'objB', 'objC' ], obj => obj.key, async lst => {
    // get your data and return as array here
    return [];
  });
  // update expiration time
  cache.xxx.renewM('mainKey', [ 'objA', 'objB' ], options);
  // clear the cached data
  cache.xxx.clearM('mainKey', [ 'objC' ]);
  cache.xxx.clearM('mainKey');
  console.log(datas.list);
})();

Create cache

The module provides two ways to create a cache

const cache9 = require('node-cache-9');
const config = {
  xxx: {
    class: 'memory',
    ttl: 5 * 60,
  },
  yyy: {
    class: 'redis',
    ttl: 10 * 60,
    rds: {
      host: '127.0.0.1',
      db: 0
    }
  }
};
// create a set of caches
const cacheGroup = cache9.init(config);
cacheGroup.xxx.get(key, func);
cacheGroup.yyy.get(key, func);
// create a cache
const cache = cache9.create(config.xxx);
cache.get(key, func);

Cache driver class

The cache driver class is a class that contains some specific methods. We operate the cache by the methods provided by the driver class.

Single cache

| function | return | description | |:----|:-----|:----| | async get(key,func,options) | any | Get data from cache or func() method | | renew(key,options) | - | Update expiration time | | async clear(key) | - | Clear cache | | setCache(key, data, options) | - | Set cache data | | async getCache(key, options) | any | Get data from cache |

Muliply caches

| function | return | description | |:----|:-----|:----| | async getM(key,list,saveKey,func,options) | {list, json} | The data is obtained from the cache in batches, and the data not in the cache is sorted out, and is obtained and cached by the func(lst) function, where saveKey(obj) is used to obtain a key corresponding to a value | | renewM(key,list,options) | - | Update expiration time | | async clearM(key, list, options) | - | Clear caches, parameter list can be omitted | | setCacheM(key, subkey, data, options) | - | Set cache data | | async getCacheM(key, list, options) | {list, json} | Get data from cache |

Default dirvers

  • memory: Memory cache driver class, using memory as a cache, can cache any data type
  • redis: Redis cache driver class, using redis server to cache data, data to be cached must support JSON.stringify

BaseDriver

BaseDriver is the base class for memory and redis. You can use BaseDriver to quickly create a new cache driver class

const BaseDriver = require('node-cache-9').BaseDriver;
class yourDriver extends BaseDriver {}
const config = {
  xxx:{
    class: yourDriver
  }
}

Config

| name | driver | description | default | |:-----|:-------|:------------|:--------| | class | - | Cache driver class, can be a built-in cache driver class name, or a custom cache driver class | undefined | | ttl | - | Time to live(second) | 0 | | keep | - | Whether the expired cache is used as the return result when data cannot be obtained from the data source | false | | autoRenew | - | When the data is retrieved from the cache, the cache expiration time is also updated | false | | cacheUndefined | - | When data is fetched in batches, those data sources that have not returned are treated as null write caches | false | | channel | memory | The redis publish/subscribe channel,need getRedis or rds | undefined | | channel | redis | The prefix of the redis cache, the prefix and the key are separated by a colon | 'cache9' | | getRedis | memory | ()=>{ return {pub, sub}},pub and sub are redis client | undefined | | getRedis | redis | ()=>{ return rds},rds is a redis client | undefined | | rds | - | Redis configures JSON, this property is invalid if getRedis is configured | undefined | | clearTime | memory | The time to automatically delete the cache, in seconds, which cannot be less than 1800 seconds. | 0 | | raw | redis | When reading and writing cached data, do not use JSON.stringify and JSON.parse | false |

Options

| name | driver | description | default | |:-----|:-------|:------------|:--------| | ttl | - | Same as config | null | | keep | - | Same as config | false | | autoRenew | - | Same as config | false| | cacheUndefined | - | Same as config | false | | getKey | - | Function for calculating the subkey corresponding to the object | obj=>obj | | disable | - | Disable caching this time | false | | update | - | Force update cache | false | | raw | redis | Same as config | false |

Run tests

Run redis-server in localhost first

npm run test

Author

985ch

Show your support

Give a ⭐️ if this project helped you!

License

Copyright © 2019 985ch. This project is MIT licensed. This README was translate by google


This README was generated with ❤️ by readme-md-generator