Based on cache-manager
All store engine based on cache-manager can be used.
npm i egg-cache -Sor
yarn add egg-cache// config/plugin.jsexports.cache={enable: true,package: 'egg-cache',};// config/config.default.jsexports.cache={default: 'memory',stores: {memory: {driver: 'memory',max: 100,ttl: 0,},},};awaitapp.cache.set('foo','bar',60,{foo: 'bar'});awaitapp.cache.get('foo');// 'bar'awaitapp.cache.has('foo');// trueawaitapp.cache.del('foo');awaitapp.cache.get('foo','default');// 'default'awaitapp.cache.has('foo');// false// closureawaitapp.cache.set('foo',()=>{return'bar';});// 'bar'// Promiseawaitapp.cache.set('foo',()=>{returnPromise.resolve('bar');});// 'bar'// Get cached value. If it's not existed, get and save the value from closureawaitapp.cache.get('foo',()=>{return'bar';});// 'bar'// You can declare an `expire` optionawaitapp.cache.get('foo',()=>{return'bar';},60,{foo: 'bar'});// foo was cachedawaitapp.cache.get('foo');// 'bar'// clear cacheawaitapp.cache.reset();- config: the
storein the configuration uses thedriverinstead.
// config/config.default.jsconstredisStore=require('cache-manager-ioredis');exports.cache={default: 'memory',stores: {memory: {driver: 'memory',max: 100,ttl: 0,},redis: {// full config: https://github.com/dabroek/node-cache-manager-ioredis#single-storedriver: redisStore,host: 'localhost',port: 6379,password: '',db: 0,ttl: 600,valid: _=>_!==null,},},};- usage
conststore=app.cache.store('redis');awaitstore.set('foo','bar');awaitstore.get('foo');// 'bar'awaitstore.del('foo');awaitstore.has('foo');// falseSet Cache
namecache namevaluecache valueexpire(Optional) expire(default from config file,the unit is second,0means nerver expire)options(Optional) Refer to cache-manager)
Refer to config/config.default.js
npm testRefer to Issues.