egg+egg-redis操作redis
egg项目中执行npm i egg-redis --save// config/plugin.jsredis: {enable: true,package: 'egg-redis',},//config/config.default.jsconfig.redis = {// 单个数据库用client// client: {//port: 6379,//host: '127.0.0.1',//pas
·
egg项目中执行
npm i egg-redis --save
// config/plugin.js
redis: {
enable: true,
package: 'egg-redis',
},
//config/config.default.js
config.redis = {
// 单个数据库用client
// client: {
// port: 6379,
// host: '127.0.0.1',
// password: null,
// db: 0,
// }
// 使用多个数据库连接
clients: {
db0: {
port: 6379,
host: '127.0.0.1',
password: null,
db: 0,
},
db1: {
port: 6379,
host: '127.0.0.1',
password: null,
db: 1,
}
}
}
// 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;
console.log(await app.redis.get('db0').get('foo'));
app.redis.get('db1').set('d','dd');
ctx.body = await app.redis.get('db1').get('d');
}
};
};
// app/controller/home.js
//使用单个数据库的数据操作
'use strict'
const Controller = require('egg').Controller;
class RedisController extends Controller {
async index() {
const { ctx, app } = this;
// 单个数据库
// 字符串
/*
常用命令
查看所有的 key: keys *
普通设置: set key value
设置并加过期时间: set key value EX 30 表示 30 秒后过期
获取数据: get key
删除指定数据: del key
删除全部数据: flushall
查看类型: type key
设置过期时间: expire key 20 表示指定的 key5 秒后过期
*/
// await app.redis.set('foo', 'Hello World');
// 设置alive-death键值对,存在两秒
// await app.redis.set('alive','death','Ex','2');
// 查看foo的数据类型
// await app.redis.type('foo', (err, value)=>{
// console.log(value); //string
// })
// ctx.body = await app.redis.get('foo');
// 查看所有的key值
// await app.redis.keys('*', (err, value)=>{
// console.log(value); //['foo']
// })
// 删除所有key值
// await app.redis.keys('fulshall', (err, value)=>{
// console.log(value); // []
// })
// console.log(await app.redis.get('foo'), await app.redis.get('alive')); // death
// setTimeout( async ()=>{
// console.log(await app.redis.get('alive')); // null
// }, 3000)
// 数组
/*
常用命令
列表右侧增加值: rpush key value
列表左侧增加值: lpush key value
右侧删除值: rpop key
左侧删除值: lpop key
获取数据: lrange key
删除指定数据: del key
删除全部数据: flushall
查看类型: type key
Redis Lrem 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。
COUNT 的值可以是以下几种:
count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
count = 0 : 移除表中所有与 VALUE 相等的值。
lrem key count value
*/
// await app.redis.lpush('arr', '1');
// await app.redis.lpush('arr', '2');
// await app.redis.rpush('arr', '3');
// await app.redis.rpush('arr', '4');
// 显示列表所有数据
// await app.redis.lrange('arr', 0, -1, (err, value)=>{
// console.log(value, 'A'); // [ '2', '1', '3', '4' ]
// })
// 显示arr这个key的类型
// await app.redis.type('arr', (err, value)=>{
// console.log(value, 'B'); // list
// })
// 从左边删除第一个数据
// await app.redis.lpop('arr', (err, value)=>{
// console.log(value, 'B'); // 2
// })
// await app.redis.lrange('arr', 0, -1, (err, value)=>{
// console.log(value, 'D'); // [ '1', '3', '4' ]
// })
// 从右边删除第一个数据
// await app.redis.rpop('arr', (err, value)=>{
// console.log(value, 'B'); // 4
// })
// await app.redis.lrange('arr', 0, -1, (err, value)=>{
// console.log(value, 'D'); // [ '1', '3' ]
// })
// count为0,删除arr中所有值为‘3’的数据
// await app.redis.lrem('arr',0, '3', (err, value)=>{
// console.log(value, 'C'); //
// })
// await app.redis.lrange('arr', 0, -1, (err, value)=>{
// console.log(value, 'D'); // [ '2', '1', '4' ]
// })
// 删除arr这个key的所有数据
// await app.redis.del('arr', (err, value)=>{
// console.log(value, 'C');
// })
// await app.redis.lrange('arr', 0, -1, (err, value)=>{
// console.log(value, 'F'); // 【
// })
//集合
//set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数
//据。 它和列表的最主要区别就是没法增加重复值
/*
常用命令
给集合增数据: sadd key value
删除集合中的一个值: srem key value
获取数据: smembers key
删除指定数据: del key
删除全部数据: flushall
*/
// await app.redis.sadd('set', '1');
// await app.redis.sadd('set', '2');
// await app.redis.sadd('set', '3');
// await app.redis.sadd('set', '4');
// 显示set这个key中的所有数据
// await app.redis.smembers('set', (err, value)=>{
// console.log(value); //[ '1', '2', '3', '4' ]
// });
// 显示set这个key的类型
// await app.redis.type('set', (err,value)=>{
// console.log(value); //set
// });
//删除set这个key中值为3的数据
// await app.redis.srem('set', '3', (err, value)=>{
// console.log(value);
// })
// await app.redis.smembers('set', (err, value)=>{
// console.log(value); //[ '1', '2', '4' ]
// });
// 删除set这个key的所有数据
// await app.redis.del('set', (err, value)=>{
// console.log(value);
// })
// await app.redis.smembers('set', (err, value)=>{
// console.log(value); //[]
// })
// 哈希
// Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
/*
常用命令
设置值 hmset :hmset key field value [field value ...] 例如 hmset zhangsan name "张三" age 18
设置单个值 hset : hset key field value 例如 hset zhangsan name "张三"
获取数据: hgetall key
删除指定数据: del key
删除全部数据: flushall
*/
await app.redis.hmset('person', 'name', '张三', 'age', 68, 'children', '{big: 大娃,little: 二娃}');
await app.redis.type('person', (err, value)=>{
console.log(value); //hash
});
await app.redis.hgetall('person', (err, value)=>{
console.log(value);
//{ name: '张三', age: '68', children: '{big: 大娃,little: 二娃}' }
});
await app.redis.del('person', (err, value)=>{
console.log(value);
});
await app.redis.hgetall('person', (err, value)=>{
console.log(value); //{}
});
}
};
module.exports = RedisController
更多推荐
已为社区贡献1条内容
所有评论(0)