Mulai Cepat: Menggunakan Azure Cache for Redis di .NET Framework

Dalam mulai cepat ini, Anda menggabungkan Azure Cache for Redis ke dalam aplikasi .NET Framework untuk memiliki akses ke cache khusus yang aman, yang dapat diakses dari aplikasi apa pun di Azure. Anda secara khusus menggunakan klien StackExchange.Redis dengan kode C# di aplikasi konsol .NET.

Langsung ke kode pada GitHub

Kloning repositori dari (https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet di GitHub.

Prasyarat

Membuat cache

  1. Untuk membuat cache, masuk ke portal Azure dan pilih Buat sumber daya.

    Create a resource is highlighted in the left navigation pane.

  2. Di halaman Baru, pilih Database, lalu pilih Azure Cache for Redis.

    On New, Databases is highlighted, and Azure Cache for Redis is highlighted.

  3. Pada halaman Cache Redis Baru, konfigurasikan pengaturan untuk cache baru Anda.

    Pengaturan Pilih nilai Deskripsi
    Langganan Buka menu drop-down dan pilih langganan Anda. Langganan untuk membuat instans Azure Cache for Redis baru ini.
    Grup sumber daya Buka drop down dan pilih grup sumber daya, atau pilih Buat baru dan masukkan nama grup sumber daya baru. Nama untuk grup sumber daya tempat membuat cache dan sumber daya lainnya. Dengan menyatukan semua sumber daya aplikasi dalam satu grup sumber daya, Anda dapat dengan mudah mengelola atau menghapusnya sekaligus.
    Nama DNS Masukkan nama yang unik. Nama cache harus merupakan untai (karakter) antara 1 dan 63 karakter yang hanya berisi angka, huruf, atau tanda hubung. Nama harus dimulai dan diakhiri dengan angka atau huruf, dan tidak boleh berisi tanda hubung berturut-turut. Nama host instans cache Anda adalah <DNS name.redis.cache.windows.net>.
    Location Buka drop down dan pilih lokasi. Pilih wilayah di dekat layanan lain yang menggunakan cache Anda.
    Jenis cache Buka menu drop down dan pilih tingkat. Tingkat menentukan ukuran, performa, dan fitur yang tersedia untuk cache tersebut. Untuk informasi selengkapnya, lihat Gambaran Umum Azure Cache for Redis.
  4. Pilih tab Jaringan atau pilih tombol Jaringan di bagian bawah halaman.

  5. Di tab Jaringan, pilih metode konektivitas Anda.

  6. Pilih tab Berikutnya: Tingkat Lanjut atau pilih tombol Berikutnya: Tingkat Lanjut di bagian bawah halaman untuk melihat tab Tingkat Lanjut .

    Screenshot showing the Advanced tab in the working pane and the available option to select.

    • Untuk cache Dasar atau Standar, alihkan pilihan untuk port non-TLS. Anda juga dapat memilih apakah Anda ingin mengaktifkan Autentikasi Microsoft Entra.
    • Untuk cache Premium, konfigurasikan pengaturan untuk port non-TLS, pengklusteran, identitas terkelola, dan persistensi data. Anda juga dapat memilih apakah Anda ingin mengaktifkan Autentikasi Microsoft Entra.
  7. Pilih tab Berikutnya: Tag atau pilih tombol Berikutnya: Tag di bagian bawah halaman.

  8. Secara opsional, di tab Tag, masukkan nama dan nilai jika Anda ingin mengategorikan sumber daya.

  9. Pilih Tinjau + buat. Anda dibawa ke tab Tinjau + buat tempat Azure memvalidasi konfigurasi Anda.

  10. Setelah pesan lulus Validasi warna hijau muncul, pilih Buat.

Dibutuhkan beberapa saat untuk membuat cache. Anda dapat memantau kemajuan di halaman Gambaran Umum Azure Cache for Redis. Ketika Status muncul sebagai Sedang Berjalan, cache siap digunakan.

Mengambil nama host, port, dan kunci akses dari portal Azure

Untuk menyambungkan ke server Azure Cache for Redis Anda, klien cache memerlukan nama host, port, dan kunci untuk cache. Beberapa klien mungkin merujuk ke item ini dengan nama yang sedikit berbeda. Anda bisa mendapatkan nama host, port, dan kunci dari portal Azure.

  • Untuk mendapatkan kunci akses, dari navigasi kiri cache, pilih Kunci akses.

    Azure Cache for Redis keys

  • Untuk mendapatkan nama host dan port, dari navigasi kiri cache, pilih Properti. Nama host dalam bentuk <nama DNS>.redis.cache.windows.net.

    Azure Cache for Redis properties

  1. Buat file di komputer Anda bernama CacheSecrets.config dan letakkan di C:\AppSecrets\CacheSecrets.config.

  2. Edit file CacheSecrets.config dan tambahkan konten berikut:

    <appSettings>
        <add key="CacheConnection" value="<host-name>,abortConnect=false,ssl=true,allowAdmin=true,password=<access-key>"/>
    </appSettings>
    
  3. Ganti <host-name> dengan nama host cache Anda.

  4. Ganti <access-key> dengan kunci primer untuk cache Anda.

  5. Simpan file.

Mengonfigurasi klien cache

Di bagian ini, Anda akan menyiapkan aplikasi konsol untuk menggunakan klien StackExchange.Redis untuk .NET.

  1. Di Visual Studio, pilih Alat>Pengelola Paket NuGet>Konsol Pengelola Paket, dan jalankan perintah berikut dari jendela Konsol Pengelola Paket.

    Install-Package StackExchange.Redis
    
  2. Setelah penginstalan selesai, klien cache StackExchange.Redis tersedia untuk digunakan dengan proyek Anda.

Koneksi ke cache Rahasia

Di Visual Studio, buka file App.config Anda untuk memverifikasi bahwa file berisi atribut appSettingsfile yang mereferensikan file CacheSecrets.config.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>

    <appSettings file="C:\AppSecrets\CacheSecrets.config"></appSettings>
</configuration>

Jangan pernah menyimpan info masuk dalam kode sumber. Untuk memastikan sampel ini tetap sederhana, kami menggunakan file konfigurasi rahasia eksternal. Pendekatan yang lebih baik adalah menggunakan Azure Key Vault dengan sertifikat.

Koneksi ke cache dengan RedisConnection

Koneksi ke cache Anda dikelola oleh kelas RedisConnection. Koneksi pertama kali dibuat dalam pernyataan ini dari Program.cs:

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


Nilai appSetting CacheConnection digunakan untuk mereferensikan string koneksi cache dari portal Azure sebagai parameter kata sandi.

Di RedisConnection.cs, Anda akan melihat namespace layanan StackExchange.Redis dengan kata kunci using. Ini diperlukan untuk kelas RedisConnection.

using StackExchange.Redis;

Kode RedisConnection memastikan bahwa selalu ada koneksi yang sehat ke cache dengan mengelola instans ConnectionMultiplexer dari StackExchange.Redis. Kelas RedisConnection membuat ulang koneksi ketika koneksi hilang dan tidak dapat tersambung kembali secara otomatis.

Untuk informasi selengkapnya, lihat StackExchange.Redis dan kode dalam repositori GitHub.

Menjalankan perintah cache

Di program.cs, Anda dapat melihat kode berikut untuk metode RunRedisCommandsAsync di kelas Program untuk aplikasi konsol:

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}");
    }


Item cache dapat disimpan dan diambil menggunakan metode StringSetAsync dan StringGetAsync.

Dalam contoh, Anda dapat melihat kunci Message diatur ke nilai. Aplikasi memperbarui nilai cache tersebut. Aplikasi juga menjalankan PING dan perintah.

Menggunakan objek .NET di cache

Server Redis menyimpan sebagian besar data sebagai string, tetapi string ini dapat berisi banyak jenis data, termasuk data biner terserialisasi, yang dapat digunakan saat menyimpan objek .NET di cache.

Azure Cache for Redis dapat men-cache objek .NET dan jenis data primitif. Tetapi sebelum objek .NET dapat di-cache, objek tersebut harus diserialisasikan.

Serialisasi objek .NET ini adalah tanggung jawab pengembang aplikasi, serta memberikan fleksibilitas kepada pengembang dalam pilihan serializer.

Salah satu cara sederhana untuk melakukan serialisasi objek adalah dengan menggunakan metode serialisasi JsonConvert di System.text.Json.

Tambahkan namespace layanan System.text.Json ke Visual Studio:

  1. Pilih Alat>NuGet Package Manager>Package Manager Console*.

  2. Kemudian, jalankan perintah berikut dari jendela Package Manager Console.

    Install-Package system.text.json
    

Kelas Employee berikut ditentukan dalam Program.cs sehingga sampel juga dapat menunjukkan cara mendapatkan dan mengatur objek berseri :

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

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

Jalankan sampel

Tekan Ctrl+F5 untuk membuat dan menjalankan aplikasi konsol untuk menguji serialisasi objek .NET.

Console app completed

Membersihkan sumber daya

Jika Anda terus menggunakan mulai cepat ini, Anda dapat menyimpan sumber daya yang Anda buat dan menggunakannya kembali.

Jika tidak, jika Anda telah selesai dengan aplikasi sampel panduan mulai cepat, Anda dapat menghapus sumber daya Azure yang dibuat di panduan mulai cepat ini untuk menghindari biaya.

Penting

Menghapus grup sumber daya tidak bisa dibatalkan dan grup sumber daya serta semua sumber daya di dalamnya akan dihapus secara permanen. Pastikan Anda tidak salah menghapus grup sumber daya atau sumber daya secara tidak sengaja. Jika Anda membuat sumber daya untuk menghosting sampel ini dalam grup sumber daya yang ada yang berisi sumber daya yang ingin disimpan, Anda dapat menghapus setiap sumber daya satu per satu dari bilahnya, bukan menghapus grup sumber daya.

Masuk ke portal Microsoft Azure, lalu pilih Grup sumber daya.

Di kotak teks Filter menurut nama..., ketik nama grup sumber daya Anda. Petunjuk untuk artikel ini menggunakan grup sumber daya bernama TestResources. Pada grup sumber daya Anda dalam daftar hasil, pilih ... lalu Hapus grup sumber daya.

Delete

Anda akan diminta untuk mengonfirmasi penghapusan grup sumber daya. Ketik nama grup sumber daya Anda untuk mengonfirmasi, dan pilih Hapus.

Setelah beberapa saat, grup sumber daya dan semua sumber daya di dalamnya akan dihapus.

Langkah berikutnya