Bagikan melalui


Pengikatan output Azure Cache for Redis untuk Azure Functions

Pengikatan output Azure Cache for Redis memungkinkan Anda mengubah kunci dalam cache berdasarkan serangkaian pemicu yang tersedia pada cache.

Untuk informasi tentang pengaturan dan detail konfigurasi, lihat gambaran umum.

Penting

Model Node.js v4 untuk Functions belum didukung oleh ekstensi Azure Cache for Redis. Untuk detail selengkapnya tentang cara kerja model v4, lihat panduan pengembang Node.js Azure Functions. Untuk mempelajari selengkapnya tentang perbedaan antara v3 dan v4, lihat panduan migrasi.

Penting

Model Python v2 untuk Functions belum didukung oleh ekstensi Azure Cache for Redis. Untuk detail selengkapnya tentang cara kerja model v2, lihat panduan pengembang Azure Functions Python.

Contoh

Fungsi C# dapat dibuat dengan menggunakan salah satu mode C# berikut:

  • Model pekerja terisolasi: Fungsi C# terkompilasi yang berjalan dalam proses pekerja yang terisolasi dari runtime. Proses pekerja terisolasi diperlukan untuk mendukung fungsi C# yang berjalan pada versi LTS dan non-LTS .NET dan .NET Framework. Ekstensi untuk fungsi proses pekerja yang terisolasi menggunakan Microsoft.Azure.Functions.Worker.Extensions.* namespace layanan.
  • Model dalam proses: Fungsi C# yang dikompilasi yang berjalan dalam proses yang sama dengan runtime Functions. Dalam variasi model ini, Functions dapat dijalankan menggunakan scripting C#, yang didukung terutama untuk pengeditan portal C#. Ekstensi untuk fungsi dalam proses menggunakan Microsoft.Azure.WebJobs.Extensions.* namespace layanan.

Contoh berikut menunjukkan pemicu pub/sub pada peristiwa yang ditetapkan dengan pengikatan output ke instans Redis yang sama. Peristiwa yang ditetapkan memicu cache dan pengikatan output mengembalikan perintah hapus untuk kunci yang memicu fungsi.

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.

using Microsoft.Extensions.Logging;

namespace Microsoft.Azure.WebJobs.Extensions.Redis.Samples.RedisOutputBinding
{
    internal class SetDeleter
    {
        [FunctionName(nameof(SetDeleter))]
        public static void Run(
            [RedisPubSubTrigger(Common.connectionStringSetting, "__keyevent@0__:set")] string key,
            [Redis(Common.connectionStringSetting, "DEL")] out string[] arguments,
            ILogger logger)
        {
            logger.LogInformation($"Deleting recently SET key '{key}'");
            arguments = new string[] { key };
        }
    }
}

Contoh berikut menunjukkan pemicu pub/sub pada peristiwa yang ditetapkan dengan pengikatan output ke instans Redis yang sama. Peristiwa yang ditetapkan memicu cache dan pengikatan output mengembalikan perintah hapus untuk kunci yang memicu fungsi.

package com.function.RedisOutputBinding;

import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.redis.annotation.*;

public class SetDeleter {
    @FunctionName("SetDeleter")
    @RedisOutput(
                name = "value",
                connection = "redisConnectionString",
                command = "DEL")
    public String run(
            @RedisPubSubTrigger(
                name = "key",
                connection = "redisConnectionString",
                channel = "__keyevent@0__:set")
                String key,
            final ExecutionContext context) {
        context.getLogger().info("Deleting recently SET key '" + key + "'");
        return key;
    }
}

Contoh ini menunjukkan pemicu pub/sub pada peristiwa yang ditetapkan dengan pengikatan output ke instans Redis yang sama. Peristiwa yang ditetapkan memicu cache dan pengikatan output mengembalikan perintah hapus untuk kunci yang memicu fungsi.

Pengikatan ditentukan dalam file 'function.json'' ini:

{
    "bindings": [
        {
            "type": "redisPubSubTrigger",
            "connection": "redisConnectionString",
            "channel": "__keyevent@0__:set",
            "name": "key",
            "direction": "in"
        },
        {
            "type": "redis",
            "connection": "redisConnectionString",
            "command": "DEL",
            "name": "$return",
            "direction": "out"
        }
    ],
    "scriptFile": "index.js"
}

Kode dari index.js file ini mengambil kunci dari pemicu dan mengembalikannya ke pengikatan output untuk menghapus item yang di-cache.

module.exports = async function (context, key) {
    context.log("Deleting recently SET key '" + key + "'");
    return key;
}

Contoh ini menunjukkan pemicu pub/sub pada peristiwa yang ditetapkan dengan pengikatan output ke instans Redis yang sama. Peristiwa yang ditetapkan memicu cache dan pengikatan output mengembalikan perintah hapus untuk kunci yang memicu fungsi.

Pengikatan ditentukan dalam file ini function.json :

{
    "bindings": [
        {
            "type": "redisPubSubTrigger",
            "connection": "redisLocalhost",
            "channel": "__keyevent@0__:set",
            "name": "key",
            "direction": "in"
        },
        {
            "type": "redis",
            "connection": "redisLocalhost",
            "command": "DEL",
            "name": "retVal",
            "direction": "out"
        }
    ],
    "scriptFile": "run.ps1"
}

Kode dari run.ps1 file ini mengambil kunci dari pemicu dan meneruskannya ke pengikatan output untuk menghapus item yang di-cache.

param($key, $TriggerMetadata)
Write-Host "Deleting recently SET key '$key'"
Push-OutputBinding -Name retVal -Value $key

Contoh ini menunjukkan pemicu pub/sub pada peristiwa yang ditetapkan dengan pengikatan output ke instans Redis yang sama. Peristiwa yang ditetapkan memicu cache dan pengikatan output mengembalikan perintah hapus untuk kunci yang memicu fungsi.

Pengikatan ditentukan dalam file ini function.json :

{
    "bindings": [
        {
            "type": "redisPubSubTrigger",
            "connection": "redisLocalhost",
            "channel": "__keyevent@0__:set",
            "name": "key",
            "direction": "in"
        },
        {
            "type": "redis",
            "connection": "redisLocalhost",
            "command": "DEL",
            "name": "$return",
            "direction": "out"
        }
    ],
    "scriptFile": "__init__.py"
}

Kode dari __init__.py file ini mengambil kunci dari pemicu dan meneruskannya ke pengikatan output untuk menghapus item yang di-cache.

import logging

def main(key: str) -> str:
    logging.info("Deleting recently SET key '" + key + "'")
    return key

Atribut

Catatan

Semua perintah didukung untuk pengikatan ini.

Cara Anda menentukan parameter pengikatan output tergantung pada apakah fungsi C# Anda berjalan dalam proses atau dalam proses pekerja yang terisolasi.

Pengikatan output didefinisikan dengan cara ini:

Definisi Contoh Deskripsi
out Pada parameter [Redis(<Connection>, <Command>)] out string <Return_Variable> Variabel string yang dikembalikan oleh metode adalah nilai kunci yang digunakan pengikatan untuk menjalankan perintah terhadap cache tertentu.

Dalam hal ini, jenis yang dikembalikan oleh metode adalah nilai kunci yang digunakan pengikatan untuk menjalankan perintah terhadap cache tertentu.

Ketika fungsi Anda memiliki beberapa pengikatan output, Anda dapat menerapkan atribut pengikatan ke properti jenis yang merupakan nilai kunci, yang digunakan pengikatan untuk menjalankan perintah terhadap cache tertentu. Untuk informasi selengkapnya, lihat Beberapa pengikatan output.


Terlepas dari mode proses C#, properti yang sama didukung oleh atribut pengikatan output:

Properti atribut Deskripsi
Connection Nama pengaturan aplikasi yang berisi string koneksi cache, seperti:<cacheName>.redis.cache.windows.net:6380,password...
Command Perintah redis-cli yang akan dijalankan pada cache, seperti: DEL.

Anotasi

Anotasi RedisOutput mendukung properti ini:

Properti Deskripsi
name Nama pengikatan input tertentu.
connection Nama pengaturan aplikasi yang berisi string koneksi cache, seperti:<cacheName>.redis.cache.windows.net:6380,password...
command Perintah redis-cli yang akan dijalankan pada cache, seperti: DEL.

Konfigurasi

Tabel berikut menjelaskan properti konfigurasi pengikatan yang Anda atur di file function.json.

Properti Deskripsi
name Nama pengikatan input tertentu.
connection Nama pengaturan aplikasi yang berisi string koneksi cache, seperti:<cacheName>.redis.cache.windows.net:6380,password...
command Perintah redis-cli yang akan dijalankan pada cache, seperti: DEL.

Lihat Bagian contoh untuk contoh lengkapnya.

Penggunaan

Output mengembalikan string, yang merupakan kunci entri cache tempat menerapkan perintah tertentu.

Ada tiga jenis koneksi yang diizinkan dari instans Azure Functions ke Redis Cache dalam penyebaran Anda. Untuk pengembangan lokal, Anda juga dapat menggunakan rahasia perwakilan layanan. appsettings Gunakan untuk mengonfigurasi masing-masing jenis autentikasi klien berikut, dengan asumsi Connection diatur ke Redis dalam fungsi.