[料理佳餚] C# StackExchange.Redis 使用 Redis Message Broker 服務

Redis 除了可以用來當 Cache 之外,還可以用來當做 Message Broker,簡單來說就是我訂閱了某個頻道,當這個頻道有訊息被發佈出來之後,我會即時收到帶有訊息的通知,光想到這個我就覺得 Message Broker 可以用來做好多事情,Chating、Notification…etc。

建立 Redis 連線

我們必須跟 Redis 建立連線,連線的 Instance 一旦建立請重覆使用。

private ConnectionMultiplexer CreateRedisConnection(string host, int port)
{
    return ConnectionMultiplexer.Connect($"{host}:{port}");
}

訂閱 Channel

Message Broker 是很標準的訂閱者模式,所以我們先跟 Redis 訂閱一個頻道,只要頻道有訊息被發佈,我們就會收到通知了。

private void Subscribe(ConnectionMultiplexer redisConn, string channelName)
{
    // 建立 Subscriber Instance
    var redisSubscriber = redisConn.GetSubscriber();

    // 訂閱名為 dotblogs 的頻道並宣告處理方式
    redisSubscriber.Subscribe(channelName, (channel, message) =>
    {
        string dotblogsMessage = (string)message;
    });
}

發佈訊息到 Channel 上

private void Publish(ConnectionMultiplexer redisConn, string channelName, string message)
{
    // 建立 Subscriber Instance
    var redisSubscriber = redisConn.GetSubscriber();

    // 發佈 hello dotblogs 訊息到 dotblogs Channel 上。
    redisSubscriber.Publish(channelName, message);
}

Demo

參考資料

< Source Code >

相關資源

C# 指南
ASP.NET 教學
ASP.NET MVC 指引
Azure SQL Database 教學
SQL Server 教學
Xamarin.Forms 教學