Redis 十五 订阅发布

这个其实很简单。

首先看封装的RedisHelper类里的订阅方法,这里支持传入委托方法。

 public void Subscribe(string subChannel, Action<RedisChannel, RedisValue> handler = null)
        {
            ISubscriber sub = _conn.GetSubscriber();
            sub.Subscribe(subChannel, (channel, message) =>
            {
                //接收订阅消息,处理逻辑
                if (handler == null)
                {
                    Console.WriteLine(subChannel + " 订阅收到消息:" + message);
                }
                else
                {
                    handler(channel, message);
                }
            });
}

再看发布方法

public long Publish<T>(string channel, T msg)
        {
            ISubscriber sub = _conn.GetSubscriber();
            return sub.Publish(channel, ConvertJson(msg));
        }

有了这两个,就可以直接实现了。

控制台调用订阅方法

class Program
    {
        static void Main(string[] args)
        {
            RedisHelper redisHelper = new RedisHelper();
            redisHelper.Subscribe("product", CallBack);
            Console.ReadLine();
        }

        public static void CallBack(RedisChannel channel, RedisValue message)
        {
            Console.WriteLine("channel:" + channel);
            Console.WriteLine("message:" + message);
        }
    }

编译后运行,控制台窗口里应该是啥也没有,因为还没发布。

 

这里我偷个懒,发布的方法直接在redis里用命令输入了。

 

 

再看控制台窗口

 

 

就这样,很简单

 

posted @ 2020-12-18 15:29  luytest  阅读(144)  评论(0编辑  收藏  举报