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 >