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.
$ npm i egg-mongoose-cache --save| egg-mongoose-cache ver | egg 2.x | egg-mongoose 3.2.x |
|---|---|---|
| 1.x | 😁 | 😁 |
| 0.x | ❌ | ❌ |
- egg-mongoose ^3.2.0
- egg-redis ^2.4.0
// {app_root}/config/plugin.js
exports.mongooseCache = {
enable: true,
package: 'egg-mongoose-cache',
};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:',
}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');Please open an issue egg-mongoose-cache issues.