Tutorial: Mulai menggunakan pemicu dan pengikatan Azure Functions di Azure Cache for Redis
Tutorial ini menunjukkan cara menerapkan pemicu dasar dengan Azure Cache for Redis dan Azure Functions. Ini memandu Anda menggunakan Visual Studio Code (VS Code) untuk menulis dan menyebarkan fungsi Azure di C#.
Dalam tutorial ini, Anda akan mempelajari cara:
- Siapkan alat yang diperlukan.
- Konfigurasikan dan sambungkan ke cache.
- Buat fungsi Azure dan sebarkan kode ke fungsi tersebut.
- Konfirmasi pengelogan pemicu.
Prasyarat
- Langganan Azure. Jika Anda tidak memiliki langganan Azure, buat akun gratis.
- Visual Studio Code.
Menyiapkan instans Azure Cache for Redis
Buat instans Azure Cache for Redis baru dengan menggunakan portal Azure atau alat CLI pilihan Anda. Tutorial ini menggunakan instans Standard C1 , yang merupakan titik awal yang baik. Gunakan panduan mulai cepat untuk memulai.
Pengaturan default sudah cukup. Tutorial ini menggunakan titik akhir publik untuk demonstrasi, tetapi kami sarankan Anda menggunakan titik akhir privat untuk apa pun dalam produksi.
Membuat cache dapat memakan waktu beberapa menit. Anda dapat berpindah ke bagian berikutnya saat proses selesai.
Menyiapkan Visual Studio Code
Jika Anda belum menginstal ekstensi Azure Functions untuk Visual Studio Code, cari Azure Functions pada menu EXTENSIONS , lalu pilih Instal. Jika Anda tidak memiliki ekstensi C# yang terinstal, instal juga.
Buka tab Azure . Masuk ke akun Azure Anda.
Untuk menyimpan proyek yang Sedang Anda bangun, buat folder lokal baru di komputer Anda. Tutorial ini menggunakan RedisAzureFunctionDemo sebagai contoh.
Pada tab Azure , buat aplikasi fungsi baru dengan memilih ikon petir di kanan atas tab Ruang Kerja.
Pilih Buat fungsi....
Pilih folder yang Anda buat untuk memulai pembuatan proyek Azure Functions baru. Anda mendapatkan beberapa perintah di layar. Pilih:
- C# sebagai bahasa.
- .NET 8.0 LTS Terisolasi sebagai runtime .NET.
- Lewati untuk saat ini sebagai templat proyek.
Jika Anda tidak menginstal .NET Core SDK, Anda akan diminta untuk melakukannya.
Penting
Untuk fungsi .NET, menggunakan model pekerja terisolasi direkomendasikan melalui model dalam proses . Untuk perbandingan model pekerja dalam proses dan terisolasi, lihat perbedaan antara model pekerja yang terisolasi dan model dalam proses untuk .NET di Azure Functions. Sampel ini menggunakan model pekerja yang terisolasi.
Konfirmasikan bahwa proyek baru muncul di panel EXPLORER .
Instal paket NuGet yang diperlukan
Anda perlu menginstal Microsoft.Azure.Functions.Worker.Extensions.Redis
, paket NuGet untuk ekstensi Redis yang memungkinkan pemberitahuan keyspace Redis digunakan sebagai pemicu di Azure Functions.
Instal paket ini dengan masuk ke tab Terminal di Visual Studio Code dan masukkan perintah berikut:
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Redis --prerelease
Catatan
Paket Microsoft.Azure.Functions.Worker.Extensions.Redis
ini digunakan untuk fungsi proses pekerja terisolasi .NET. Fungsi dalam proses .NET dan semua bahasa lain akan menggunakan paket sebagai gantinya Microsoft.Azure.WebJobs.Extensions.Redis
.
Mengonfigurasi cache
Buka instans Azure Cache for Redis yang baru dibuat.
Buka cache Anda di portal Azure, lalu:
Pada menu sumber daya, pilih Pengaturan tingkat lanjut.
Gulir ke bawah ke kotak notify-keyspace-events dan masukkan KEA.
KEA adalah string konfigurasi yang memungkinkan pemberitahuan keyspace untuk semua kunci dan peristiwa. Untuk informasi selengkapnya tentang string konfigurasi keyspace, lihat dokumentasi Redis.
Pilih Simpan di bagian atas jendela.
Temukan Tombol akses pada menu Sumber Daya, lalu tulis atau salin konten kotak String koneksi Utama. String ini digunakan untuk menyambungkan ke cache.
Menyiapkan kode contoh untuk pemicu Redis
Di Visual Studio Code, tambahkan file yang disebut Common.cs ke proyek. Kelas ini digunakan untuk membantu mengurai respons berseri JSON untuk PubSubTrigger.
Salin dan tempel kode berikut ke dalam file Common.cs :
public class Common { public const string connectionString = "redisConnectionString"; public class ChannelMessage { public string SubscriptionChannel { get; set; } public string Channel { get; set; } public string Message { get; set; } } }
Tambahkan file yang disebut RedisTriggers.cs ke proyek.
Salin dan tempel sampel kode berikut ke dalam file baru:
using Microsoft.Extensions.Logging; using Microsoft.Azure.Functions.Worker; using Microsoft.Azure.Functions.Worker.Extensions.Redis; public class RedisTriggers { private readonly ILogger<RedisTriggers> logger; public RedisTriggers(ILogger<RedisTriggers> logger) { this.logger = logger; } // PubSubTrigger function listens to messages from the 'pubsubTest' channel. [Function("PubSubTrigger")] public void PubSub( [RedisPubSubTrigger(Common.connectionString, "pubsubTest")] Common.ChannelMessage channelMessage) { logger.LogInformation($"Function triggered on pub/sub message '{channelMessage.Message}' from channel '{channelMessage.Channel}'."); } // KeyeventTrigger function listens to key events from the 'del' operation. [Function("KeyeventTrigger")] public void Keyevent( [RedisPubSubTrigger(Common.connectionString, "__keyevent@0__:del")] Common.ChannelMessage channelMessage) { logger.LogInformation($"Key '{channelMessage.Message}' deleted."); } // KeyspaceTrigger function listens to key events on the 'keyspaceTest' key. [Function("KeyspaceTrigger")] public void Keyspace( [RedisPubSubTrigger(Common.connectionString, "__keyspace@0__:keyspaceTest")] Common.ChannelMessage channelMessage) { logger.LogInformation($"Key 'keyspaceTest' was updated with operation '{channelMessage.Message}'"); } // ListTrigger function listens to changes to the 'listTest' list. [Function("ListTrigger")] public void List( [RedisListTrigger(Common.connectionString, "listTest")] string response) { logger.LogInformation(response); } // StreamTrigger function listens to changes to the 'streamTest' stream. [Function("StreamTrigger")] public void Stream( [RedisStreamTrigger(Common.connectionString, "streamTest")] string response) { logger.LogInformation(response); } }
Tutorial ini menunjukkan beberapa cara untuk memicu aktivitas Redis:
PubSubTrigger
, yang dipicu ketika aktivitas diterbitkan ke saluran Pub/Sub bernamapubsubTest
.KeyspaceTrigger
, yang dibangun pada pemicu Pub/Sub. Gunakan untuk mencari perubahan padakeyspaceTest
kunci.KeyeventTrigger
, yang juga dibangun di atas pemicu Pub/Sub. Gunakan untuk mencari penggunaanDEL
perintah apa pun.ListTrigger
, yang mencari perubahan padalistTest
daftar.StreamTrigger
, yang mencari perubahan padastreamTest
aliran.
Koneksi ke cache Anda
Untuk memicu aktivitas Redis, Anda perlu meneruskan string koneksi instans cache Anda. Informasi ini disimpan dalam file local.settings.json yang dibuat secara otomatis di folder Anda. Kami menyarankan agar Anda menggunakan file pengaturan lokal sebagai praktik terbaik keamanan.
Untuk menyambungkan ke cache Anda, tambahkan
ConnectionStrings
bagian di file local.settings.json, lalu tambahkan string koneksi Anda dengan menggunakanredisConnectionString
parameter . Bagian akan terlihat seperti contoh ini:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "redisConnectionString": "<your-connection-string>" } }
Kode dalam Common.cs melihat nilai ini saat berjalan secara lokal:
public const string connectionString = "redisConnectionString";
Penting
Contoh ini disederhanakan untuk tutorial. Untuk penggunaan produksi, kami sarankan Anda menggunakan Azure Key Vault untuk menyimpan informasi string koneksi atau mengautentikasi ke instans Redis menggunakan EntraID.
Membangun dan menjalankan kode secara lokal
Beralih ke tab Jalankan dan debug di Visual Studio Code dan pilih panah hijau untuk men-debug kode secara lokal. Jika Anda tidak memiliki alat inti Azure Functions yang terinstal, Anda akan diminta untuk melakukannya. Dalam hal ini, Anda harus memulai ulang Visual Studio Code setelah menginstal.
Kode harus berhasil dibangun. Anda dapat melacak kemajuannya di output terminal.
Untuk menguji fungsionalitas pemicu, coba buat dan hapus
keyspaceTest
kunci.Anda dapat menggunakan cara apa pun yang Anda sukai untuk menyambungkan ke cache. Cara mudahnya adalah dengan menggunakan alat konsol bawaan di portal Azure Cache for Redis. Buka instans cache di portal Azure, lalu pilih Konsol untuk membukanya.
Setelah konsol terbuka, coba perintah berikut:
SET keyspaceTest 1
SET keyspaceTest 2
DEL keyspaceTest
PUBLISH pubsubTest testMessage
LPUSH listTest test
XADD streamTest * name Clippy
Konfirmasikan bahwa pemicu sedang diaktifkan di terminal.
Menambahkan pengikatan Redis
Pengikatan menambahkan cara yang disederhanakan untuk membaca atau menulis data yang disimpan di instans Redis Anda. Untuk menunjukkan manfaat pengikatan, kami menambahkan dua fungsi lainnya. Satu disebut SetGetter
, yang memicu setiap kali kunci diatur dan mengembalikan nilai baru kunci menggunakan pengikatan input. Yang lain disebut StreamSetter
, yang memicu ketika item baru ditambahkan ke aliran myStream
dan menggunakan pengikatan output untuk menulis nilai true
ke kunci newStreamEntry
.
Tambahkan file yang disebut RedisBindings.cs ke proyek.
Salin dan tempel sampel kode berikut ke dalam file baru:
using Microsoft.Extensions.Logging; using Microsoft.Azure.Functions.Worker; using Microsoft.Azure.Functions.Worker.Extensions.Redis; public class RedisBindings { private readonly ILogger<RedisBindings> logger; public RedisBindings(ILogger<RedisBindings> logger) { this.logger = logger; } //This example uses the PubSub trigger to listen to key events on the 'set' operation. A Redis Input binding is used to get the value of the key being set. [Function("SetGetter")] public void SetGetter( [RedisPubSubTrigger(Common.connectionString, "__keyevent@0__:set")] Common.ChannelMessage channelMessage, [RedisInput(Common.connectionString, "GET {Message}")] string value) { logger.LogInformation($"Key '{channelMessage.Message}' was set to value '{value}'"); } //This example uses the PubSub trigger to listen to key events to the key 'key1'. When key1 is modified, a Redis Output binding is used to set the value of the 'key1modified' key to 'true'. [Function("SetSetter")] [RedisOutput(Common.connectionString, "SET")] public string SetSetter( [RedisPubSubTrigger(Common.connectionString, "__keyspace@0__:key1")] Common.ChannelMessage channelMessage) { logger.LogInformation($"Key '{channelMessage.Message}' was updated. Setting the value of 'key1modified' to 'true'"); return $"key1modified true"; } }
Beralih ke tab Jalankan dan debug di Visual Studio Code dan pilih panah hijau untuk men-debug kode secara lokal. Kode harus berhasil dibangun. Anda dapat melacak kemajuannya di output terminal.
Untuk menguji fungsi pengikatan input, coba atur nilai baru untuk kunci apa pun, misalnya menggunakan perintah
SET hello world
Anda akan melihat bahwaSetGetter
fungsi memicu dan mengembalikan nilai yang diperbarui.Untuk menguji fungsionalitas pengikatan output, coba tambahkan item baru ke aliran
myStream
menggunakan perintahXADD myStream * item Order1
. Perhatikan bahwa fungsi dipicuStreamSetter
pada entri aliran baru dan atur nilaitrue
ke kunci lain yang disebutnewStreamEntry
. Perintah iniset
juga memicuSetGetter
fungsi.
Menyebarkan kode ke fungsi Azure
Buat fungsi Azure baru:
Kembali ke tab Azure dan perluas langganan Anda.
Klik kanan Aplikasi Fungsi, lalu pilih Buat Aplikasi Fungsi di Azure (Tingkat Lanjut).
Anda mendapatkan beberapa permintaan informasi untuk mengonfigurasi aplikasi fungsi baru:
- Masukkan nama yang unik.
- Pilih .NET 8 Terisolasi sebagai tumpukan runtime.
- Pilih Linux atau Windows (berfungsi).
- Pilih grup sumber daya yang sudah ada atau baru untuk menyimpan aplikasi fungsi.
- Pilih wilayah yang sama dengan instans cache Anda.
- Pilih Premium sebagai paket hosting.
- Buat paket Azure App Service baru.
- Pilih tingkat harga EP1 .
- Pilih akun penyimpanan yang sudah ada atau buat akun baru.
- Membuat sumber daya Application Insights baru. Anda menggunakan sumber daya untuk mengonfirmasi bahwa pemicu berfungsi.
Penting
Pemicu Redis saat ini tidak didukung pada fungsi konsumsi.
Tunggu beberapa menit hingga aplikasi fungsi baru dibuat. Ini muncul di bawah Aplikasi Fungsi di langganan Anda. Klik kanan aplikasi fungsi baru, lalu pilih Sebarkan ke Aplikasi Fungsi.
Aplikasi ini membangun dan mulai menyebarkan. Anda dapat melacak kemajuannya di jendela output.
Menambahkan informasi string koneksi
Di portal Azure, buka aplikasi fungsi baru Anda dan pilih Variabel lingkungan dari menu sumber daya.
Pada panel kerja, buka Pengaturan aplikasi.
Untuk Nama, masukkan redis Koneksi ionString.
Untuk Nilai, masukkan string koneksi Anda.
Pilih Terapkan pada halaman untuk mengonfirmasi.
Navigasi ke panel Gambaran Umum dan pilih Mulai Ulang untuk me-reboot aplikasi fungsi dengan informasi string koneksi.
Menguji pemicu dan pengikatan Anda
Setelah penyebaran selesai dan informasi string koneksi ditambahkan, buka aplikasi fungsi Anda di portal Azure. Lalu pilih Aliran Log dari menu sumber daya.
Tunggu Hingga Analitik Log tersambung, lalu gunakan konsol Redis untuk mengaktifkan salah satu pemicu. Konfirmasikan bahwa pemicu sedang dicatat di sini.
Membersihkan sumber daya
Jika Anda ingin terus menggunakan sumber daya yang Anda buat di artikel ini, simpan grup sumber daya.
Jika tidak, jika Anda sudah selesai dengan sumber daya, Anda dapat menghapus grup sumber daya Azure yang Anda buat untuk menghindari biaya.
Penting
Penghapusan grup sumber daya tidak bisa dipulihkan. Ketika Anda menghapus grup sumber daya, semua sumber daya di dalamnya dihapus secara permanen. Pastikan Anda tidak salah menghapus grup sumber daya atau sumber daya secara tidak sengaja. Jika Anda membuat sumber daya di dalam grup sumber daya yang sudah ada yang berisi sumber daya yang ingin Anda simpan, Anda dapat menghapus setiap sumber daya satu per satu alih-alih menghapus grup sumber daya.
Untuk menghapus grup sumber daya
Masuk ke portal Azure, lalu pilih Grup sumber daya.
Pilih grup sumber daya yang ingin Anda hapus.
Jika ada banyak grup sumber daya, gunakan kotak Filter untuk bidang apa pun... , ketik nama grup sumber daya yang Anda buat untuk artikel ini. Pilih grup sumber daya dalam daftar hasil.
Pilih Hapus grup sumber daya.
Anda akan diminta untuk mengonfirmasi penghapusan grup sumber daya. Ketik nama grup sumber daya Anda lagi untuk mengonfirmasi, lalu pilih Hapus.
Setelah beberapa saat, grup sumber daya dan semua sumber dayanya akan dihapus.