Bagikan melalui


Pengikatan input Azure Cache for Redis untuk Azure Functions

Saat fungsi berjalan, pengikatan input Azure Cache for Redis mengambil data dari cache dan meneruskannya ke fungsi Anda sebagai parameter input.

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.

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.

Kode berikut menggunakan kunci dari pemicu pub/sub untuk mendapatkan dan mencatat nilai dari pengikatan input menggunakan GET perintah:

using Microsoft.Extensions.Logging;

namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisInputBinding
{
    public class SetGetter
    {
        private readonly ILogger<SetGetter> logger;

        public SetGetter(ILogger<SetGetter> logger)
        {
            this.logger = logger;
        }

        [Function(nameof(SetGetter))]
        public void Run(
            [RedisPubSubTrigger(Common.connectionStringSetting, "__keyevent@0__:set")] string key,
            [RedisInput(Common.connectionStringSetting, "GET {Message}")] string value)
        {
            logger.LogInformation($"Key '{key}' was set to value '{value}'");
        }
    }
}

Sampel lainnya untuk pengikatan input Azure Cache for Redis tersedia di repositori GitHub.

Kode berikut menggunakan kunci dari pemicu pub/sub untuk mendapatkan dan mencatat nilai dari pengikatan input menggunakan GET perintah:

package com.function.RedisInputBinding;

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

public class SetGetter {
    @FunctionName("SetGetter")
    public void run(
            @RedisPubSubTrigger(
                name = "key",
                connection = "redisConnectionString",
                channel = "__keyevent@0__:set")
                String key,
            @RedisInput(
                name = "value",
                connection = "redisConnectionString",
                command = "GET {Message}")
                String value,
            final ExecutionContext context) {
            context.getLogger().info("Key '" + key + "' was set to value '" + value + "'");
    }
}

Ini function.json menentukan pemicu pub/sub dan pengikatan input ke pesan GET pada instans Azure Cache for Redis:

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

Kode JavaScript ini (dari index.js) mencoba dan mencatat nilai cache yang terkait dengan kunci yang disediakan oleh pemicu pub/sub.


module.exports = async function (context, key, value) {
    context.log("Key '" + key + "' was set to value '" + value + "'");
}

Ini function.json menentukan pemicu pub/sub dan pengikatan input ke pesan GET pada instans Azure Cache for Redis:

{
    "bindings": [
        {
            "type": "redisPubSubTrigger",
            "connection": "redisConnectionString",
            "channel": "__keyevent@0__:set",
            "name": "key",
            "direction": "in"
        },
        {
            "type": "redis",
            "connection": "redisConnectionString",
            "command": "GET {Message}",
            "name": "value",
            "direction": "in"
        }
    ],
    "scriptFile": "run.ps1"
}

Kode PowerShell ini (dari run.ps1) mengambil dan mencatat nilai cache yang terkait dengan kunci yang disediakan oleh pemicu pub/sub.

param($key, $value, $TriggerMetadata)
Write-Host "Key '$key' was set to value '$value'"

Contoh berikut menggunakan pemicu pub/sub dengan pengikatan input ke pesan GET pada instans Azure Cache for Redis. Contohnya tergantung pada apakah Anda menggunakan model pemrograman Python v1 atau v2.

Ini function.json menentukan pemicu pub/sub dan pengikatan input ke pesan GET pada instans Azure Cache for Redis:

{
    "bindings": [
        {
            "type": "redisPubSubTrigger",
            "connection": "redisConnectionString",
            "channel": "__keyevent@0__:set",
            "name": "key",
            "direction": "in"
        },
        {
            "type": "redis",
            "connection": "redisConnectionString",
            "command": "GET {Message}",
            "name": "value",
            "direction": "in"
        }
    ]
}

Kode Python ini (dari __init__.py) mencoba dan mencatat nilai cache yang terkait dengan kunci yang disediakan oleh pemicu pub/sub:


import logging

def main(key: str, value: str):
    logging.info("Key '" + key + "' was set to value '" + value + "'")

Bagian konfigurasi menjelaskan properti ini.

Atribut

Catatan

Tidak semua perintah didukung untuk pengikatan ini. Saat ini, hanya perintah baca yang mengembalikan satu output yang didukung. Daftar lengkap dapat ditemukan di sini

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 dengan semua argumen yang dipisahkan oleh spasi, seperti: GET key, HGET key field.

Anotasi

Anotasi RedisInput 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 dengan semua argumen dipisahkan oleh spasi, seperti: GET key atau HGET key field.

Konfigurasi

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

Properti function.json 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 dengan semua argumen yang dipisahkan oleh spasi, seperti: GET key, HGET key field.

Catatan

Python v2 dan Node.js v4 for Functions tidak menggunakan function.json untuk menentukan fungsi. Kedua versi bahasa baru ini saat ini tidak didukung oleh pengikatan Azure Redis Cache.

Lihat Bagian contoh untuk contoh lengkapnya.

Penggunaan

Pengikatan input mengharapkan untuk menerima string dari cache.

Saat Anda menggunakan jenis kustom sebagai parameter pengikatan, ekstensi mencoba mendeserialisasi string berformat JSON ke dalam jenis kustom parameter ini.