Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。 Redis单线程服务,采用IO多路复用,以队列的模式对redis操作进行处理,内置连接处理寄存器,命令接收寄存器,命令响应寄存器,可处理百万级Qps。相比MemCache类型更为丰富,有string,hash,list,set,sort set等。目前,Redis是大部分程序员的首选缓存。
npm i egg-redis --save
// config/plugin.js文件中增加插件引入
exports.redis = {
enable: true,
package: 'egg-redis',
};
// 在config/config.default.js增加redis服务配置
config.redis = {
client: {
port: 6379, // Redis port
host: '127.0.0.1', // Redis host
password: 'auth',
db: 0,
},
}
config.redis = {
clients: {
foo: { // instanceName. See below
port: 6379, // Redis port
host: '127.0.0.1', // Redis host
password: 'auth',
db: 0,
},
bar: {
port: 6379,
host: '127.0.0.1',
password: 'auth',
db: 1,
},
}
}
config.redis = {
client: {
sentinels: [{ // Sentinel instances
port: 26379, // Sentinel port
host: '127.0.0.1', // Sentinel host
}],
name: 'mymaster', // Master name
password: 'auth',
db: 0
},
}
基于egg框架,egg-redis配置完毕后将引入redis,挂载到app对象redis,通过app.redis来进行redis操作。
// app/controller/home.js
module.exports = app => {
return class HomeController extends app.Controller {
async index() {
const { ctx, app } = this;
// set 操作
await app.redis.set('foo', 'bar');
// get 操作
ctx.body = await app.redis.get('foo');
}
};
};
// app/controller/home.js
module.exports = app => {
return class HomeController extends app.Controller {
async index() {
const { ctx, app } = this;
// set
await app.redis.get('instance1').set('foo', 'bar');
// get
ctx.body = await app.redis.get('instance1').get('foo');
}
};
};