Node.js 节点js轮询数据更改
使用节点js和redis作为缓存和发布子代码。缓存存储有用消息的列表。一点之后,这些消息将从redis中删除。如果消息数量低于10,我们必须向所有订阅者“发布”响应以使用和执行某些操作 以下是我的出版商代码草案:Node.js 节点js轮询数据更改,node.js,redis,polling,Node.js,Redis,Polling,使用节点js和redis作为缓存和发布子代码。缓存存储有用消息的列表。一点之后,这些消息将从redis中删除。如果消息数量低于10,我们必须向所有订阅者“发布”响应以使用和执行某些操作 以下是我的出版商代码草案: var redis = require('redis') var pub = redis.createClient(6379, 'localhost'); pub.keys('message:*', function (err, keys){ if (err) retur
var redis = require('redis')
var pub = redis.createClient(6379, 'localhost');
pub.keys('message:*', function (err, keys){
if (err) return console.log(err);
if (keys.length < 10){
pub.publish("mchannel", "Messages threshold reached", function(err){
if (err) throw err;
});
}
});
当我使用node命令执行发布者和订阅者代码时,消息只发布一次..正如预期的那样
如何不断轮询发布者代码中的缓存更改并发布该消息?嗯,您必须重复检查数据,或者每次发生更改数据的操作时都检查长度。我是否应该在函数中使用无限循环并检查它?请告诉我,我想这取决于你认为无限循环。对我来说,虽然真的{do}是一个无限循环,但这不是一个好主意。我只会使用setInterval或日程安排模块(如agenda set)每分钟运行一次。
var redis = require('redis')
var sub = redis.createClient();
sub.on("message", function(channel, message){
console.log("Message '" + message + "' on channel '" + channel + "' received!")
// Some action...
});
sub.subscribe("mchannel");