redis消息上的异步操作
Posted
技术标签:
【中文标题】redis消息上的异步操作【英文标题】:Async operations on redis message 【发布时间】:2018-01-04 04:27:10 【问题描述】:我正在尝试在 redis 客户端发布消息时更新 mongoose 模型。
这就是我正在做的事情
redisClient.on('message', (channel, message) =>
let data= JSON.parse(message);
console.log(message);
let user_id = data.user_id;
let story_id = data.story_id;
let ratingDetails = data.ratingDetails;
User.findById(user_id, (err, user) =>
if(err) return console.error(err);
user.rating += (ratingDetails.polarity * ratingDetails.rating);
console.log(ratingDetails);
console.log(user.rating);
user.save((err) =>
if(err) return console.error(err);
);
);
Story.findById(story_id, (err, story) =>
if(err) return console.error(err);
story.totalRating += (ratingDetails.polarity * ratingDetails.rating);
story.save((err) =>
if(err) return console.error(err);
);
);
);
console.log(message) 正在显示传递的消息,但它没有执行任何猫鼬操作。模型没有更新。
我是第一次使用 redis。这是一个好方法还是有其他替代方法?
【问题讨论】:
【参考方案1】:我有解决方案,我在另一个节点进程中做所有 redis 的东西,所以 Mongo 连接在 redis 进程中不可用。
我刚刚在redis进程中创建了另一个连接并解决了问题。
【讨论】:
以上是关于redis消息上的异步操作的主要内容,如果未能解决你的问题,请参考以下文章
基于异步消息队列List lpush-brpop(rpush-blpop)