Bagikan melalui


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

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.

Cuplikan layar membuat cache di portal Azure.

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

  1. 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.

    Cuplikan layar ekstensi yang diperlukan diinstal di Visual Studio Code.

  2. Buka tab Azure . Masuk ke akun Azure Anda.

  3. Untuk menyimpan proyek yang Sedang Anda bangun, buat folder lokal baru di komputer Anda. Tutorial ini menggunakan RedisAzureFunctionDemo sebagai contoh.

  4. Pada tab Azure , buat aplikasi fungsi baru dengan memilih ikon petir di kanan atas tab Ruang Kerja.

  5. Pilih Buat fungsi....

    Cuplikan layar yang memperlihatkan ikon untuk menambahkan fungsi baru dari Visual Studio Code.

  6. 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.

  7. Konfirmasikan bahwa proyek baru muncul di panel EXPLORER .

    Cuplikan layar ruang kerja di Visual Studio Code.

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

  1. Buka instans Azure Cache for Redis yang baru dibuat.

  2. Buka cache Anda di portal Azure, lalu:

    1. Pada menu sumber daya, pilih Pengaturan tingkat lanjut.

    2. 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.

    3. Pilih Simpan di bagian atas jendela.

    Cuplikan layar pengaturan tingkat lanjut untuk Azure Cache for Redis di portal.

  3. Temukan Tombol akses pada menu Sumber Daya, lalu tulis atau salin konten kotak String koneksi Utama. String ini digunakan untuk menyambungkan ke cache.

    Cuplikan layar yang memperlihatkan string koneksi utama untuk kunci akses.

Menyiapkan kode contoh untuk pemicu Redis

  1. Di Visual Studio Code, tambahkan file yang disebut Common.cs ke proyek. Kelas ini digunakan untuk membantu mengurai respons berseri JSON untuk PubSubTrigger.

  2. 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; }
        }
    }
    
  3. Tambahkan file yang disebut RedisTriggers.cs ke proyek.

  4. 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);
        }
    }
    
  5. Tutorial ini menunjukkan beberapa cara untuk memicu aktivitas Redis:

    • PubSubTrigger, yang dipicu ketika aktivitas diterbitkan ke saluran Pub/Sub bernama pubsubTest.
    • KeyspaceTrigger, yang dibangun pada pemicu Pub/Sub. Gunakan untuk mencari perubahan pada keyspaceTest kunci.
    • KeyeventTrigger, yang juga dibangun di atas pemicu Pub/Sub. Gunakan untuk mencari penggunaan DEL perintah apa pun.
    • ListTrigger, yang mencari perubahan pada listTest daftar.
    • StreamTrigger, yang mencari perubahan pada streamTest aliran.

Koneksi ke cache Anda

  1. 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.

  2. Untuk menyambungkan ke cache Anda, tambahkan ConnectionStrings bagian di file local.settings.json, lalu tambahkan string koneksi Anda dengan menggunakan redisConnectionString 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

  1. 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.

  2. Kode harus berhasil dibangun. Anda dapat melacak kemajuannya di output terminal.

  3. 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.

    Cuplikan layar kode C-Sharp dan string koneksi.

    Setelah konsol terbuka, coba perintah berikut:

    • SET keyspaceTest 1
    • SET keyspaceTest 2
    • DEL keyspaceTest
    • PUBLISH pubsubTest testMessage
    • LPUSH listTest test
    • XADD streamTest * name Clippy

    Cuplikan layar konsol dan beberapa perintah dan hasil Redis.

  4. Konfirmasikan bahwa pemicu sedang diaktifkan di terminal.

    Cuplikan layar editor Visual Studio Code dengan kode berjalan.

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.

  1. Tambahkan file yang disebut RedisBindings.cs ke proyek.

  2. 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";
        }
    }
    
  3. 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.

  4. Untuk menguji fungsi pengikatan input, coba atur nilai baru untuk kunci apa pun, misalnya menggunakan perintah SET hello world Anda akan melihat bahwa SetGetter fungsi memicu dan mengembalikan nilai yang diperbarui.

  5. Untuk menguji fungsionalitas pengikatan output, coba tambahkan item baru ke aliran myStream menggunakan perintah XADD myStream * item Order1. Perhatikan bahwa fungsi dipicu StreamSetter pada entri aliran baru dan atur nilai true ke kunci lain yang disebut newStreamEntry. Perintah ini set juga memicu SetGetter fungsi.

Menyebarkan kode ke fungsi Azure

  1. Buat fungsi Azure baru:

    1. Kembali ke tab Azure dan perluas langganan Anda.

    2. Klik kanan Aplikasi Fungsi, lalu pilih Buat Aplikasi Fungsi di Azure (Tingkat Lanjut).

    Cuplikan layar pilihan untuk membuat aplikasi fungsi di Visual Studio Code.

  2. 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.

  3. 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.

    Cuplikan layar pilihan untuk menyebarkan ke aplikasi fungsi di Visual Studio Code.

  4. Aplikasi ini membangun dan mulai menyebarkan. Anda dapat melacak kemajuannya di jendela output.

Menambahkan informasi string koneksi

  1. Di portal Azure, buka aplikasi fungsi baru Anda dan pilih Variabel lingkungan dari menu sumber daya.

  2. Pada panel kerja, buka Pengaturan aplikasi.

  3. Untuk Nama, masukkan redis Koneksi ionString.

  4. Untuk Nilai, masukkan string koneksi Anda.

  5. Pilih Terapkan pada halaman untuk mengonfirmasi.

  6. Navigasi ke panel Gambaran Umum dan pilih Mulai Ulang untuk me-reboot aplikasi fungsi dengan informasi string koneksi.

Menguji pemicu dan pengikatan Anda

  1. Setelah penyebaran selesai dan informasi string koneksi ditambahkan, buka aplikasi fungsi Anda di portal Azure. Lalu pilih Aliran Log dari menu sumber daya.

  2. Tunggu Hingga Analitik Log tersambung, lalu gunakan konsol Redis untuk mengaktifkan salah satu pemicu. Konfirmasikan bahwa pemicu sedang dicatat di sini.

    Cuplikan layar aliran log untuk sumber daya aplikasi fungsi di menu sumber daya.

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

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

  2. 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.

    Cuplikan layar memperlihatkan daftar grup sumber daya yang akan dihapus di panel kerja.

  3. Pilih Hapus grup sumber daya.

  4. Anda akan diminta untuk mengonfirmasi penghapusan grup sumber daya. Ketik nama grup sumber daya Anda lagi untuk mengonfirmasi, lalu pilih Hapus.

    Cuplikan layar memperlihatkan formulir yang memerlukan nama sumber daya untuk mengonfirmasi penghapusan.

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