Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点js轮询数据更改_Node.js_Redis_Polling - Fatal编程技术网

Node.js 节点js轮询数据更改

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

使用节点js和redis作为缓存和发布子代码。缓存存储有用消息的列表。一点之后,这些消息将从redis中删除。如果消息数量低于10,我们必须向所有订阅者“发布”响应以使用和执行某些操作

以下是我的出版商代码草案:

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");