Mulai Cepat: Menggunakan Azure Cache for Redis di .NET Core
Dalam mulai cepat ini, Anda menggabungkan Azure Cache for Redis ke dalam aplikasi .NET Core 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 Core.
Langsung ke kode pada GitHub
Kloning repositori https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet-core di GitHub.
Prasyarat
- Langganan Azure - buat akun secara gratis
- .NET Core SDK
Membuat cache
Untuk membuat cache, masuk ke portal Azure dan pilih Buat sumber daya.
Di halaman Baru, pilih Database, lalu pilih Azure Cache for Redis.
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. Pilih tab Jaringan atau pilih tombol Jaringan di bagian bawah halaman.
Di tab Jaringan, pilih metode konektivitas Anda.
Pilih tab Berikutnya: Tingkat Lanjut atau pilih tombol Berikutnya: Tingkat Lanjut di bagian bawah halaman untuk melihat tab Tingkat Lanjut .
- 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.
Pilih tab Berikutnya: Tag atau pilih tombol Berikutnya: Tag di bagian bawah halaman.
Secara opsional, di tab Tag, masukkan nama dan nilai jika Anda ingin mengategorikan sumber daya.
Pilih Tinjau + buat. Anda dibawa ke tab Tinjau + buat tempat Azure memvalidasi konfigurasi Anda.
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.
Untuk mendapatkan nama host dan port, dari navigasi kiri cache, pilih Properti. Nama host dalam bentuk <nama DNS>.redis.cache.windows.net.
Catat NAMA HOST dan kunci akses Utama. Anda akan menggunakan nilai ini nanti untuk membangun rahasia CacheConnection.
Menambahkan rahasia lokal untuk string koneksi
Di jendela perintah Anda, jalankan perintah berikut untuk menyimpan rahasia baru bernama CacheConnection, setelah mengganti tempat penampung (termasuk kurung sudut) untuk nama cache dan kunci akses utama Anda:
dotnet user-secrets set CacheConnection "<cache name>.redis.cache.windows.net,abortConnect=false,ssl=true,allowAdmin=true,password=<primary-access-key>"
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: configuration["CacheConnection"].ToString());
Di RedisConnection.cs
, Anda melihat namespace StackExchange.Redis
telah ditambahkan ke kode. 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.
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 id, string name, int age)
{
Id = id;
Name = name;
Age = age;
}
}
Jalankan sampel
Jika Anda telah membuka file apa pun, simpan dan bangun aplikasi dengan perintah berikut:
dotnet build
Jalankan aplikasi dengan perintah berikut untuk menguji serialisasi objek .NET:
dotnet run
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 selesai dengan aplikasi sampel mulai cepat, Anda dapat menghapus sumber daya Azure yang dibuat dalam 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.
Untuk 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.
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.