Skip to content

Egg's cache plugin based on egg-mongoose and egg-redis for egg framwork

License

Notifications You must be signed in to change notification settings

GeorgeChan/egg-mongoose-cache

Repository files navigation

egg-mongoose-cache

NPM version

Egg's cache plugin based on egg-mongoose and egg-redis for egg framwork

  • egg-mongoose-cache plugin rewrite from cachegoose, increase support for populate.

中文版

Install

$ npm i egg-mongoose-cache --save

Dependencies

egg version

egg-mongoose-cache ver egg 2.x egg-mongoose 3.2.x
1.x 😁 😁
0.x

Dependencies plugins

Usage

// {app_root}/config/plugin.js
exports.mongooseCache = {
  enable: true,
  package: 'egg-mongoose-cache',
};

Configuration

see config/config.default.js for more detail.

  • instanceName: when use egg-redis Multi Clients, set the redis instance name
  • ttl: global default expiration time(second), default: 600
  • keyPrefix: redis Prefix key, defalut: "mc:"

egg-redis Single Client:

exports.mongooseCache = {
  ttl: 600,
  keyPrefix: 'mc:',
}

egg-redis Multi Clients:

exports.mongooseCache = {
  instanceName: 'cache',
  ttl: 300,
  keyPrefix: 'mc:',
}

Example

In controller or service, you can use find/findOne/aggregate to cache data to redis.

Use FindOne/populate, cache 60 second:

let data = await ctx.model.user.findOne({ 'username': 'user1' }).populate('userinfo').cache(60);

Use Find, cache 600 second:

let data = await ctx.model.user.find({}).limit(10).skip(5).cache();

Use Aggregate, cache 60 second and user custom key:

let data = await ctx.model.user.aggregate(myPipelines).cache(60,'myKey');

Questions & Suggestions

Please open an issue egg-mongoose-cache issues.

License

MIT

About

Egg's cache plugin based on egg-mongoose and egg-redis for egg framwork

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published