Share via


Azure Cache voor Redis invoerbinding voor Azure Functions

Wanneer een functie wordt uitgevoerd, haalt de Azure Cache voor Redis invoerbinding gegevens op uit een cache en geeft deze als invoerparameter door aan uw functie.

Zie het overzicht voor informatie over het instellen en configureren van details.

Belangrijk

Het Node.js v4-model voor Functions wordt nog niet ondersteund door de extensie Azure Cache voor Redis. Raadpleeg de ontwikkelaarshandleiding voor Azure Functions Node.js voor meer informatie over hoe het v4-model werkt. Raadpleeg de migratiehandleiding voor meer informatie over de verschillen tussen v3 en v4.

Belangrijk

Het Python v2-model voor Functions wordt nog niet ondersteund door de Azure Cache voor Redis-extensie. Raadpleeg de Ontwikkelaarshandleiding voor Azure Functions Python voor meer informatie over hoe het v2-model werkt.

Opmerking

U kunt een C#-functie maken met behulp van een van de volgende C#-modi:

  • Geïsoleerd werkrolmodel: gecompileerde C#-functie die wordt uitgevoerd in een werkproces dat is geïsoleerd van de runtime. Geïsoleerd werkproces is vereist voor de ondersteuning van C#-functies die worden uitgevoerd op LTS- en niet-LTS-versies .NET en .NET Framework. Extensies voor geïsoleerde werkprocesfuncties maken gebruik van Microsoft.Azure.Functions.Worker.Extensions.* naamruimten.
  • In-process model: gecompileerde C#-functie die wordt uitgevoerd in hetzelfde proces als de Functions-runtime. In een variatie van dit model kunnen functies worden uitgevoerd met behulp van C#-scripting. Dit wordt voornamelijk ondersteund voor het bewerken van de C#-portal. Extensies voor in-process-functies maken gebruik van Microsoft.Azure.WebJobs.Extensions.* naamruimten.

Belangrijk

Voor .NET-functies wordt het gebruik van het geïsoleerde werkrolmodel aanbevolen via het procesmodel. Zie de verschillen tussen het geïsoleerde werkrolmodel en het in-procesmodel voor .NET in Azure Functions voor een vergelijking van de in-proces- en geïsoleerde werkrolmodellen.

De volgende code gebruikt de sleutel van de pub/subtrigger om de waarde van een invoerbinding te verkrijgen en te registreren met behulp van een GET opdracht:

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}'");
        }
    }
}

Meer voorbeelden voor de Azure Cache voor Redis invoerbinding zijn beschikbaar in de GitHub-opslagplaats.

De volgende code gebruikt de sleutel van de pub/subtrigger om de waarde van een invoerbinding te verkrijgen en te registreren met behulp van een GET opdracht:

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 + "'");
    }
}

Deze function.json definieert zowel een pub/subtrigger als een invoerbinding voor het GET-bericht op een Azure Cache voor Redis exemplaar:

{
    "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"
}

Met deze JavaScript-code (van index.js) wordt de waarde in de cache opgehaald en vastgelegd die is gerelateerd aan de sleutel die is opgegeven door de pub/subtrigger.


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

Deze function.json definieert zowel een pub/subtrigger als een invoerbinding voor het GET-bericht op een Azure Cache voor Redis exemplaar:

{
    "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"
}

Met deze PowerShell-code (van run.ps1) wordt de waarde in de cache opgehaald en vastgelegd die is gerelateerd aan de sleutel die is opgegeven door de pub/subtrigger.

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

In het volgende voorbeeld wordt een pub/subtrigger gebruikt met een invoerbinding voor het GET-bericht op een Azure Cache voor Redis exemplaar. Het voorbeeld is afhankelijk van of u het python-programmeermodel v1 of v2 gebruikt.

Deze function.json definieert zowel een pub/subtrigger als een invoerbinding voor het GET-bericht op een Azure Cache voor Redis exemplaar:

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

Met deze Python-code (van __init__.py) wordt de waarde in de cache opgehaald en vastgelegd die is gerelateerd aan de sleutel die is opgegeven door de pub/subtrigger:


import logging

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

In de configuratiesectie worden deze eigenschappen uitgelegd.

Kenmerken

Notitie

Niet alle opdrachten worden ondersteund voor deze binding. Op dit moment worden alleen leesopdrachten ondersteund die één uitvoer retourneren. De volledige lijst vindt u hier

Kenmerkeigenschap Beschrijving
Connection De naam van de toepassingsinstelling die de cache-verbindingsreeks bevat, zoals:<cacheName>.redis.cache.windows.net:6380,password...
Command De redis-cli-opdracht die moet worden uitgevoerd op de cache met alle argumenten gescheiden door spaties, zoals: GET key, HGET key field.

Aantekeningen

De RedisInput aantekening ondersteunt deze eigenschappen:

Eigenschappen Beschrijving
name De naam van de specifieke invoerbinding.
connection De naam van de toepassingsinstelling die de cache-verbindingsreeks bevat, zoals:<cacheName>.redis.cache.windows.net:6380,password...
command De redis-cli-opdracht die moet worden uitgevoerd op de cache met alle argumenten gescheiden door spaties, zoals: GET key of HGET key field.

Configuratie

In de volgende tabel worden de bindingsconfiguratie-eigenschappen uitgelegd die u in het function.json-bestand hebt ingesteld.

function.json-eigenschap Beschrijving
connection De naam van de toepassingsinstelling die de cache-verbindingsreeks bevat, zoals:<cacheName>.redis.cache.windows.net:6380,password...
command De redis-cli-opdracht die moet worden uitgevoerd op de cache met alle argumenten gescheiden door spaties, zoals: GET key, HGET key field.

Notitie

Python v2 en Node.js v4 voor Functions gebruiken geen function.json om de functie te definiëren. Beide nieuwe taalversies worden momenteel niet ondersteund door Azure Redis Cache-bindingen.

Zie de sectie Voorbeeld voor volledige voorbeelden.

Gebruik

De invoerbinding verwacht een tekenreeks uit de cache te ontvangen.

Wanneer u een aangepast type als bindingsparameter gebruikt, probeert de extensie een tekenreeks met JSON-indeling te deserialiseren in het aangepaste type van deze parameter.