[.NET][Redis]Redis Cache In Azure筆記

為了實現網站橫向擴充的架構,狀態或是資料快取需要一個共用的儲存機制,除了儲存在資料庫(資料庫也需要散熱):

  • ASP.NET Session可以選State Server。
  • 如果是快取可以選Windows Server AppFabric Cache(Session也可以存)。

自從要開始支援橫向擴充就這樣盤算著及設計,昨天和公司年輕熱血的工程師討論技術議題,認識一種NoSQL的好物:Redis,晚上不跑步,嘗試使用Azure設定快取伺服器。

 

 

在社群網站大量快速的讀取需求下,出現許多NoSQL解決方案,就像memcached,Redis也是其中一種;

Redis是基於BSD License的開源軟體,一種key pair方式的記憶體資料儲存

想體驗看看,Azure上剛好有一篇:如何使用 Azure Redis 快取於是選擇雲端的解決方案。

 

 

主要的步驟

A.架設Redis Cache服務。

B.Client端專案進行Nuget安裝(StackExchange.Redis)。

C.建立Client端測試程式。

 

A.架設Redis Cache服務

1.進Windows Azure Portal,按下新增,並在所有項目輸入篩選條件:cache

2.選擇建立Redis快取

3.輸入DNS Name並設置相關資源參數,輸入完畢後按下建立。(如果需要叢集架構,可以選進階層)

4.從儀表板上可以發現正在建置,大約5-10分鐘就會建立完畢。

5.建置完畢後進入Redis快取管理頁面中,選取顯示管理金鑰。

  然後將主要連接字串複製要來,待會Client端連線要用到。

B.Nuget安裝(搜尋StackExchange.Redis)。

 

 

C.建立Client端測試程式。

1.建立Redis Connection,將剛剛複製到主要連接字串貼進來Connect引數。

2.預設SSL連線走6380;Non-SSL走6379。

3.分別利用String.SetString.Get 將物件放入快取或取出快取

Stopwatch sw = new Stopwatch();
sw.Start();

//設定連線字串
ConnectionMultiplexer connection =
    ConnectionMultiplexer.Connect(
    "Cyber.redis.cache.windows.net:6380,password=xxx=,ssl=True,abortConnect=False");

sw.Stop();
Console.WriteLine("總耗時(Connect) = " + sw.ElapsedMilliseconds);
sw.Restart();

if (connection.IsConnected)
{
    IDatabase cache = connection.GetDatabase();

    sw.Stop();
    Console.WriteLine("總耗時(GetDatabase) = " + sw.ElapsedMilliseconds);
    sw.Restart();

    cache.StringSet("key1", "key1 value");
    cache.StringSet("key2", 25);

    sw.Stop();
    Console.WriteLine("總耗時(StringSet) = " + sw.ElapsedMilliseconds);
    sw.Restart();

    Console.WriteLine("key1:{0}", cache.StringGet("key1"));
    Console.WriteLine("key2:{0}", cache.StringGet("key2"));

    sw.Stop();
    Console.WriteLine("總耗時(StringGet) = " + sw.ElapsedMilliseconds);
    sw.Restart();
}

4.執行測試:

小結:

  • 建立Redis連線的時間很長: 連線物件一定要共用
  • Redis 3.0開始支援叢集Cluster(資料分散於多個 Redis 節點)。
  • Redis Process本身為單一執行序
  • Redis 可以安裝在Linux或是OS X中,版本也是由Redis官方支援;但官方強烈建議佈署在Linux最佳
  • 也有Windows安裝版本: 由微軟Developer維護

 

參考:

如何使用 Azure Redis 快取

Redis 官方網站

如何設定高階 Azure Redis 快取的 Redis 叢集