共用方式為


快速入門:在 .NET Core 中使用 Azure Cache for Redis

在本快速入門中,您會將 Azure Cache for Redis 納入 .NET Core 應用程式中,以便存取可從 Azure 內的任何應用程式存取的安全專用快取。 您會在 .NET Core 主控台應用程式中明確地搭配使用 StackExchange.Redis 用戶端與 C# 程式碼。

跳至 GitHub 上的程式碼

複製 GitHub 上的存放庫 https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet-core

必要條件

建立快取

  1. 若要建立快取,請登入 Azure 入口網站,然後選取 [建立資源]

    建立資源會在左側瀏覽窗格中反白顯示。

  2. 在 [ 開始使用] 頁面上,於搜尋方塊中輸入 Azure Cache for Redis 。 然後,選取 [建立]

    搜尋方塊中 Azure Cache for Redis 的 Azure Marketplace 螢幕快照,並以紅色方塊醒目提示建立。

  3. 在 [ 新增 Redis 快 取] 頁面上,設定快取的設定。

    設定 選擇值 描述
    訂用帳戶 下拉並選取您的訂用帳戶。 這個新的 Azure Cache for Redis 執行個體建立所在的訂用帳戶。
    資源群組 下拉並選取資源群組,或選取 [新建] 並輸入新的資源群組名稱。 用來建立快取和其他資源的資源群組名稱。 將所有的應用程式資源放在一個資源群組中,您將可輕鬆地一併管理或刪除這些資源。
    DNS 名稱 輸入唯一名稱。 快取名稱必須為介於 1 到 63 個字元之間的字串,而且只能包含數字、字母或連字號。 名稱的開頭和結尾必須是數字或字母,且不可包含連續的連字號。 快取執行個體的「主機名稱」<DNS 名稱>.redis.cache.windows.net
    地點 下拉並選取位置。 選取一個區域,其靠近其他要使用您快取的服務。
    快取 SKU 下拉式清單並選取 SKU SKU 會決定快取可用的大小、效能和功能參數。 如需詳細資訊,請參閱 Azure Cache for Redis 概觀
    快取大小 下拉式清單並選取快取的大小 如需詳細資訊,請參閱 Azure Cache for Redis 概觀
  4. 選取 [網路] 索引標籤,或選取頁面底部的 [網路] 按鈕。

  5. 在 [網路功能] 索引標籤中,選取您的連線方法。

  6. 選取 [下一步: 進階] 索引標籤,或選取頁面底部的 [下一步: 進階] 按鈕以查看 [進階] 索引標籤。

    此螢幕快照顯示工作窗格中的 [進階] 索引標籤,以及要選取的選項。

    • 針對基本或標準快取,切換適用於非 TLS 連接埠的選取項目。 您也可以選取是否要啟用 Microsoft Entra 驗證
    • 針對進階快取,設定適用於非 TLS 連接埠、叢集、受控識別和資料持續性的設定。 您也可以選取是否要啟用 Microsoft Entra 驗證
  7. 選取 [下一步: 標記] 索引標籤,或選取頁面底部的 [下一步: 標記] 按鈕。

  8. 在 [標記] 索引標籤中,如果您想要分類資源,可以選擇性地輸入名稱和值。

  9. 選取 [檢閱 + 建立]。 您會移至 [檢閱 + 建立] 索引標籤,其中 Azure 會驗證您的設定。

  10. 出現綠色的「通過驗證」訊息之後,請選取 [建立]

建立快取需要一些時間。 您可以在 Azure Cache for Redis 的 [概觀] 頁面上監視進度。 當 [狀態] 顯示為 [執行中] 時,表示快取已可供使用。

從 Azure 入口網站擷取主機名稱、連接埠和存取金鑰

若要連線 Azure Cache for Redis 伺服器,快取用戶端需要快取的主機名稱、連接埠和金鑰。 某些用戶端可能會以稍有不同的名稱來參考這些項目。 您可以從 Azure 入口網站取得主機名稱、連接埠和金鑰。

  • 若要取得存取金鑰,請從 [資源] 功能選取 [ 驗證 ]。 然後,選取 [ 存取金鑰] 索引標籤

    Azure Cache for Redis 金鑰

  • 若要取得快取的主機名和埠,請從 [資源] 功能表中選取 [概觀 ]。 主機名稱的格式為 <DNS 名稱>.redis.cache.windows.net

    Azure Redis 快取屬性

請記下主機名稱主要存取金鑰。 您稍後會使用這些值來建構 CacheConnection 祕密。

新增連接字串的本機祕密

在命令視窗中,在取代您的快取名稱和主要存取金鑰的預留位置 (包括角括號) 後,執行下列命令以儲存名為 CacheConnection 的新密碼:

dotnet user-secrets set CacheConnection "<cache name>.redis.cache.windows.net,abortConnect=false,ssl=true,allowAdmin=true,password=<primary-access-key>"

使用 RedisConnection 連線到快取

與快取的連線是由 RedisConnection 類別所管理。 首先從 Program.cs 在此陳述式中建立連線:

      _redisConnection = await RedisConnection.InitializeAsync(connectionString: configuration["CacheConnection"].ToString());

RedisConnection.cs 中,您會看到 StackExchange.Redis 命名空間已新增至程式碼。 這是 RedisConnection 類別的必要項目。

using StackExchange.Redis;

RedisConnection 程式碼管理來自 StackExchange.RedisConnectionMultiplexer 執行個體,以確保對快取的連線一定良好。 當連線中斷且無法自動重新連線時,RedisConnection 類別會重新建立連線。

如需詳細資訊,請參閱 StackExchange.RedisGitHub 存放庫中的程式碼。

執行快取命令

program.cs 中,您可以看到主控台應用程式的 Program 類別中的 RunRedisCommandsAsync 方法有下列程式碼:

private static async Task RunRedisCommandsAsync(string prefix)
    {
        // Simple PING command
        Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: PING");
        RedisResult pingResult = await _redisConnection.BasicRetryAsync(async (db) => await db.ExecuteAsync("PING"));
        Console.WriteLine($"{prefix}: Cache response: {pingResult}");

        // Simple get and put of integral data types into the cache
        string key = "Message";
        string value = "Hello! The cache is working from a .NET console app!";

        Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: GET {key} via StringGetAsync()");
        RedisValue getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync(key));
        Console.WriteLine($"{prefix}: Cache response: {getMessageResult}");

        Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: SET {key} \"{value}\" via StringSetAsync()");
        bool stringSetResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringSetAsync(key, value));
        Console.WriteLine($"{prefix}: Cache response: {stringSetResult}");

        Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: GET {key} via StringGetAsync()");
        getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync(key));
        Console.WriteLine($"{prefix}: Cache response: {getMessageResult}");

        // Store serialized object to cache
        Employee e007 = new Employee("007", "Davide Columbo", 100);
        stringSetResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringSetAsync("e007", JsonSerializer.Serialize(e007)));
        Console.WriteLine($"{Environment.NewLine}{prefix}: Cache response from storing serialized Employee object: {stringSetResult}");

        // Retrieve serialized object from cache
        getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync("e007"));
        Employee e007FromCache = JsonSerializer.Deserialize<Employee>(getMessageResult);
        Console.WriteLine($"{prefix}: Deserialized Employee .NET object:{Environment.NewLine}");
        Console.WriteLine($"{prefix}: Employee.Name : {e007FromCache.Name}");
        Console.WriteLine($"{prefix}: Employee.Id   : {e007FromCache.Id}");
        Console.WriteLine($"{prefix}: Employee.Age  : {e007FromCache.Age}{Environment.NewLine}");
    }

您可以使用 StringSetAsyncStringGetAsync 方法來儲存和擷取快取項目。

在此範例中,您可以看到 Message 索引鍵設定為值。 應用程式更新了該快取值。 應用程式也已執行 PING 和命令。

使用快取中的 .NET 物件

Redis 伺服器將大部分資料儲存為字串,但這些字串可能包含許多類型的資料,包括序列化的二進位資料 (在快取中儲存 .NET 物件時可能用到)。

Azure Cache for Redis 可以快取 .NET 物件及基本資料類型,但必須先將 .NET 物件序列化,才能加以快取。

.NET 物件序列化是應用程式開發人員的責任,同時賦與開發人員選擇序列化程式的彈性。

Program.cs 中定義下列 Employee 類別,因此範例也顯示如何取得和設定序列化物件:

class Employee
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }

        public Employee(string id, string name, int age)
        {
            Id = id;
            Name = name;
            Age = age;
        }
    }

執行範例

如果您已開啟任何檔案,請儲存檔案,並使用下列命令組建應用程式:

dotnet build

使用下列命令執行應用程式,以測試 .NET 物件的序列化:

dotnet run

主控台應用程式已完成

清除資源

如果繼續使用本快速入門,您可以保留並重複使用您已建立的資源。

亦或您不再使用快速入門範例應用程式,請刪除本快速入門中建立的 Azure 資源,以免衍生費用。

重要

刪除資源群組是無法回復的動作,資源群組和其內的所有資源將會永久刪除。 請確定您不會不小心刪除錯誤的資源群組或資源。 如果您是在包含需保留資源的現有資源群組內部,建立用來裝載此範例的資源,則可以個別刪除左側的每個資源,而不必刪除整個資源群組。

刪除資源群組

  1. 登入 Azure 入口網站,然後選取 [資源群組]

  2. 在 [依名稱篩選...] 文字方塊中,輸入您的資源群組名稱。 本文的指示是使用名為 TestResources 的資源群組。 在結果清單中的目標資源群組上方,選取 ...,然後按一下 [刪除資源群組]

    刪除

  3. 系統將會要求您確認是否刪除資源。 輸入您資源群組的名稱以進行確認,然後選取 [刪除]

片刻過後,系統便會刪除該資源群組及其所有內含的資源。

下一步