• 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
    

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

  • 相关阅读:
    window多线程编程
    强大的字符数组
    linux设置环境变量一些坑的总结
    Java hello world
    一次音频波形的问题
    0xfffxxx的负数表示
    pcm数据格式存储格式
    Pooled genome sequence strategies |representative genome assembly approaches|Domestication|GERP|selective sweep|Hybridization|Introgression|iHS|SNP genotyping arrays|haplotype
    【转】Fst指数
    index|substr
  • 原文地址:https://www.cnblogs.com/mengfangui/p/12270081.html
Copyright © 2020-2023  润新知