首先先说一下流程: 保存数据到 Redis,然后将 member 值 publish 到 chat 频道(publish.js 功能) readRedis.js 文件此前一直在监听 chat 频道,readRedis.js 文件接收到 member 后,用它作为条件去 Redis 中去查找,拿到 score 数据 pu ..

NodeJS 操作 Redis 发布订阅消息

首先先说一下流程:

  1. 保存数据到 Redis,然后将 member 值 publish 到 chat 频道(publish.js 功能)
  2. readRedis.js 文件此前一直在监听 chat 频道,readRedis.js 文件接收到 member 后,用它作为条件去 Redis 中去查找,拿到 score 数据

publish.js 文件:

var redis = require("redis");
var client = redis.createClient(6379, "127.0.0.1");

function zadd(key, score, member) {
    client.zadd(key, score, member, function () {
        client.publish("chat", member);//client将member发布到chat这个频道
        //然后订阅这个频道的订阅者就会收到消息
    });
}
for (var i = 0; i < 10; i++) {
    zadd("z", i, "" + i);//发布10次
    console.log("第" + i + "次");
}

readRedis.js 文件:

var client = redis.createClient(6379, "127.0.0.1");
var client1 = redis.createClient(6379, "127.0.0.1");

function getRedisData() {
    //客户端连接redis成功后执行回调
    client.on("ready", function () {
        //订阅消息
        client.subscribe("chat");
        client.subscribe("chat1");
        console.log("订阅成功。。。");
    });

    client.on("error", function (error) {
        console.log("Redis Error " + error);
    });

    //监听订阅成功事件
    client.on("subscribe", function (channel, count) {
        console.log("client subscribed to " + channel + "," + count + "total subscriptions");
    });

    //收到消息后执行回调,message是redis发布的消息
    client.on("message", function (channel, message) {
        console.log("我接收到信息了" + message);
        dealWithMsg(message);
    });

    //监听取消订阅事件
    client.on("unsubscribe", function (channel, count) {
        console.log("client unsubscribed from" + channel + ", " + count + " total subscriptions")
    });
}

function dealWithMsg(message) {
    //按照message查询内容
    client1.zscore("z", message, function (err, reply) {
        console.log(message + "的内容是:" + reply);
    });
}
getRedisData();

--EOF--

  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    149 引用 • 216 回帖 • 776 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    104 引用 • 221 回帖 • 683 关注
1 操作
someone756 在 2019-07-16 08:21:11 更新了该帖
回帖
请输入回帖内容...