隐藏

nodejs如何操作redis,如何订阅和发布消息?

发布:2023/11/1 22:32:34作者:管理员 来源:本站 浏览次数:415

代码如下,注意替换redis连接信息为您真实的信息。

var redis = require('redis');


var client = redis.createClient("6379", "127.0.0.1", {auth_pass: "yoursecret"});

client.on('connect', function () {

   //client.hset("hash key", "field 1", "v1", redis.print);

   //client.hget("hash key", "field 1", redis.print);

   //client.quit();

});


var client1 = redis.createClient("6379", "127.0.0.1", {auth_pass: "yoursecret"});

client1.on('connect', function () {

   client1.subscribe("channel");

});

client1.on("message", function (channel, message) {

   console.log("普通订阅接收到来自" + channel + "的信息:" + message);

   if (message == "demo") {

       client.publish("demo","demo msg");

   }

   if (message == "quit1") {

       client1.unsubscribe("channel");

       console.log("普通订阅操作已经取消");

       //client2.quite();

   }

});


var client2 = redis.createClient("6379", "127.0.0.1", {auth_pass: "yoursecret"});

client2.on('connect', function () {

   client2.psubscribe("channel*");

});

client2.on("pmessage", function (p, channel, message) {

   console.log("批量订阅接收到来自" + channel + "的信息:" + message);

   if (message == "quit2") {

       client2.punsubscribe("channel*");

       console.log("批量订阅操作已经取消");

       //client2.quite();

   }

});

JavaScript

基本说明

这里出现的新概念就是批量订阅这个概念,就是说可以同时订阅多个频道,可以用正则表达式来进行匹配。相关的函数都多个p字,而接受消息的部分也有所不同。注意,这里批量订阅channel*的时候,在channel里面发布的消息,批量订阅也接收到了。

普通订阅:subscribe, on("message",function(channel,message)),unsubscribe

批量订阅:psubscribe, on("pmessage",function(p,channel,message)),punsubscribe

发布订阅:publish

发布的时候,并没有批量和不批量的区分,就是channel的名字和值而已。订阅的时候,可以根据情况选择是否批量订阅。还有需要注意的时候,订阅及发布,都是需要单独的client的,一个client同时只能做一个事情,这也就是上面初始化了那么多client的原因。