• redis实现发布和订阅


    redis实现发布和订阅

    示例

    publish.js

    // 引入redis
    let redis = require("redis");
    // 创建连接
    let client = redis.createClient(6379, "127.0.0.1");
    
    client.on("ready", function () {
        //订阅消息
        client.subscribe("chatB");
    });
    // 失败处理
    client.on("error", function (error) {
        console.log("Redis Error " + error);
    });
    
    //监听订阅成功事件
    client.on("subscribe", function (channel, data) {
        console.log("client subscribed to " + channel + ",data:" + data);
    });
    //收到消息后执行回调,message是redis发布的消息
    client.on("message", function (channel, message) {
        console.log("我接收到信息了" + message);
    });
    //监听取消订阅事件
    client.on("unsubscribe", function (channel, count) {
        console.log("client unsubscribed from" + channel + ", " + count + " total subscriptions")
    });
    
    
    function zadd(channel, data) {
        client.publish("chatA", data);//client将member发布到chat这个频道
        //然后订阅这个频道的订阅者就会收到消息
    }
    for (let i = 0; i < 10; i++) {
        zadd("z", "" + i);//发布10次
    }
    

    readRedis.js

    let redis = require("redis");  
    let client = redis.createClient(6379, "127.0.0.1");  
    
    //客户端连接redis成功后执行回调
    client.on("ready", function () {
        //订阅消息
        client.subscribe("chatA");
    });
    // 失败处理
    client.on("error", function (error) {
        console.log("Redis Error " + error);
    });
    
    //监听订阅成功事件
    client.on("subscribe", function (channel, data) {
        console.log("client subscribed to " + channel + ",data:" + data);
    });
    //收到消息后执行回调,message是redis发布的消息
    client.on("message", function (channel, message) {
        console.log("我接收到信息了" + message);
    });
    //监听取消订阅事件
    client.on("unsubscribe", function (channel, count) {
        console.log("client unsubscribed from" + channel + ", " + count + " total subscriptions")
    });
    
    

    先执行readRedis.js,后执行publish.js,readRedis.js的控制台输出:

    我接收到信息了0
    我接收到信息了1
    我接收到信息了2
    我接收到信息了3
    我接收到信息了4
    我接收到信息了5
    我接收到信息了6
    我接收到信息了7
    我接收到信息了8
    我接收到信息了9
    

    每个文件都可以监听和发布消息。

  • 相关阅读:
    Redis在windows下安装过程
    Java中如何使用Redis做缓存
    Redis学习记录之Java中的初步使用
    Java多线程实现简单的售票程序
    list,set,map,数组间的相互转换
    高性能Java Web 页面静态化技术(原创)
    Nginx windows下搭建过程
    高并发解决方案--负载均衡
    高并发解决方案--页面静态化
    phpcms 自定义方法
  • 原文地址:https://www.cnblogs.com/mengfangui/p/12270081.html
Copyright © 2020-2023  润新知