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
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐