zoukankan      html  css  js  c++  java
  • [StackExchange]Redis 发布订阅

    直接上代码

     public class Lampard
        {
            public static void Main(string[] args)
            {
                using (var client = ConnectionMultiplexer.Connect("192.168.224.134:6379,abortConnect=false,ssl=false,password=123"))
                {
                    if (client.IsConnected)
                        Console.WriteLine("Connect Success!");
                    else
                        Console.WriteLine("Connect Fails");
                    var sub = client.GetSubscriber();
                    sub.Subscribe("test", (channel, message) =>
                    {
                        Console.WriteLine("收到来自" + channel.ToString() + "的消息:" + message);
                    });
                    while (true)
                    {
                        Console.WriteLine("已经订阅test,请输入要发布的消息");
                        sub.Publish("test", Console.ReadLine());
                    }
                    // Console.ReadLine();
                }
            }
        }

    效果图
    这里写图片描述

    指定消息发布的顺序(Message Order)

    当使用 pub/sub API 时,你可以指定消息是并行还是有序的。
    有序的意味着你不需要考虑线程安全的问题 ,同时也意味着消息会通过队列完全按照你发布的顺序来进行传递,这必然导致消息的延迟。
    并行处理,不能保证消息是按照发布的顺序来进行处理的,你的代码也要保证当存在并发时程序运行正常,
    消息的顺序通常是无关紧要的, 并行处理可以获得更好的性能和扩展性。

    为确保安全,消息的传递默认是有序的。为获得更好的性能强烈建议你使用并行操作 。 这是非常简单的。

    multiplexer.PreserveAsyncOrder = false;

    建议并非是你配置该选项的理由, 是否适合完全取决与你订阅消息的代码。

    http://www.runoob.com/redis/redis-pub-sub.html
    http://www.mamicode.com/info-detail-1063252.html

  • 相关阅读:
    vue双向数据绑定原理
    vue-router原理
    CSS选择器优化
    静态资源的渲染阻塞
    什么是Base64?Base64的原理是什么?
    OAuth的解释
    AMD与CMD的区别
    AMD的实现
    组件通信的几种方式
    关于istream_iterator<int>(cin)和istream_iterator<int>()的一点分析
  • 原文地址:https://www.cnblogs.com/xiaoch/p/13417943.html
Copyright © 2011-2022 走看看