引入插件
npm i egg-redis --save
config/plugin.js文件中配置插件
'use strict';
module.exports = {
redis: {
enable: true,
package: 'egg-redis',
},
};
config/config.default.js文件中配置redis参数
注:这里直接配置多库模式,并给不同的库定义别名,方便使用——redis单机模式可用,如果是集群模式,则老老实实的配置一个就行,具体参照egg-redis集群模式配置
/* eslint valid-jsdoc: "off" */
'use strict';
/**
* @param {Egg.EggAppInfo} appInfo app info
*/
module.exports = appInfo => {
/**
* built-in config
* @type {Egg.EggAppConfig}
**/
const config = exports = {};
config.redis = {
clients: {
user: { // user可以替换为自己想要的
port: 6379,
host: '127.0.0.1',
password: '',
db: 0, // 单机模式的默认库
},
other: {
port: 6379,
host: '127.0.0.1',
password: '',
db: 1,
},
},
};
return {
...config,
};
};
redis-service封装文件的配置 app/service/cache/redis.js
'use strict';
const BaseService = require('../core/base'); // 标注1:BaseService基类文件根据自己的
const dbConfig = [ 'user', 'other' ]; // 标注2:配置文件中的名称,便于读取
/**
* redis类
*/
class RedisService extends BaseService { // 标注1:BaseService基类文件根据自己的
/**
* redis数据存储,所有数据均存储为序列化json字符串
* @param {*} key 键名
* @param {*} val 键值
* @param {*} expir 有效期
* @param {*} db 配置库名 ,从dbConfig中进行取值
*/
async set(key, val, expir = 0, db = 0) {
const { redis } = this.app;
const dbRedis = redis.clients.get(dbConfig[db]);
if (expir === 0) {
return await dbRedis.set(key, JSON.stringify(val));
}
return await dbRedis.set(key, JSON.stringify(val), 'EX', expir);
}
/**
* 获取缓存的值
* @param {*} key 键名
* @param {*} db 库编号
*/
async get(key, db = 0) {
const { redis } = this.app;
const dbRedis = await redis.clients.get(dbConfig[db]).get(key);
return JSON.parse(dbRedis);
}
}
module.exports = RedisService;
egg.js中进行调用数据
'use strict';
class HomeController {
async redisCeshi() {
const { ctx } = this;
const rs = await ctx.service.cache.redis.set('ceshi', 'sadas', 60, 0); // 存储
const rsN = await ctx.service.cache.redis.get('ceshi', 0); // 获取
ctx.body = '操作成功';
}
}
module.exports = HomeController;