node.js - egg 后端 使用redis 进行多个异步方法 操作数据 多个异步方法 执行完后 再取数据

node.js - egg 后端 使用redis 进行多个异步方法 操作数据 多个异步方法 执行完后 再取数据

1.方法介绍:
(1). hset: redis.hset(‘队列名’,‘键名(域名)’,值(value)) 为 指定 队列 新增 指定 的 值
(2).hget: redis.hget(‘队列名’,‘键名(域名)’) 获取 指定 队列 内的 指定 键名(域名) 的值
eg:

  • redis.hset(‘test’,‘key_word’,1);
    //为 test 队列 键名为 key_word 的值设置为 1。 如果test 队列不存在 则会 创建 一个 test 队列 如果 key_word 键名不存在 则会 创建一个 键名为 key_word 值为 1 的数据
  • redis.hget(‘test’,‘key_word’);
  • // 获取 test 队列 内 键名为 key_word 的值 此处 获取的值为 1

2.使用场景:

//获取 100个人的 信息
async function main(){
	/* 逻辑处理*/
	
	/*
	此处为 循环
	此处  使用 2个 队列来  标示  是否 完成
	redis.hset('name',i,false);
	redis.hset('age',i,false);
*/
	getName(array);//异步 执行
	getAge(array);//异步 执行
}

async  getName(array){
	/*获取名字*/
	/*
	此处为 循环
	获取 完之后 将对应的 队列 内的 值 改为 true   代表 该 部分 数据已经 处理完成
	redis.hset('name',i,true);
*/
}

async getAge(array){

	/*获取年龄*/
/*
此处为 循环
获取 完之后 将对应的 队列 内的 值 改为 true   代表 该 部分 数据已经 处理完成
	redis.hset('age',i,true);
*/
}
//返回 数据给 前端    该方法 为 前端 轮询 请求  执行  (每隔多少s 执行一次)
async returnData(data){
let offset =  data.offset || 0;   // data 是前端传过来的 偏移量
	//这里 需要 等 main 方法   getName    getAge 方法 都执行 完了  拼接 成 一个 完整的 数据 再 返回 给 前端   
	//此处 使用 while 来 实现 递归
	let return_data =[];  //记录  完整 信息的 位置    通过位置  从数据库 取对应的 数据
	while(await redis.hget('name',offset) && await redis.hget('age',offset))	{
		
		 //将 二者 均为 true 的值 返回给前端   (完整信息)
		 return_data.push(offset);
		 offset++
	}
	//数据库 操作
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值