Share via


Azure Cache voor Redis uitvoerbinding voor Azure Functions

Met de Azure Cache voor Redis uitvoerbindingen kunt u de sleutels in een cache wijzigen op basis van een set beschikbare triggers in de cache.

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.

In het volgende voorbeeld ziet u een pub/subtrigger voor de set-gebeurtenis met een uitvoerbinding naar hetzelfde Redis-exemplaar. De setgebeurtenis activeert de cache en de uitvoerbinding retourneert een verwijderopdracht voor de sleutel die de functie heeft geactiveerd.

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.


using Microsoft.Extensions.Logging;

namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisOutputBinding
{
    internal class SetDeleter
    {
        [Function(nameof(SetDeleter))]
        [RedisOutput(Common.connectionString, "DEL")]
        public static string Run(
            [RedisPubSubTrigger(Common.connectionString, "__keyevent@0__:set")] string key,
            ILogger logger)
        {
            logger.LogInformation($"Deleting recently SET key '{key}'");
            return key;
        }
    }
}
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 };
        }
    }
}

In het volgende voorbeeld ziet u een pub/subtrigger voor de set-gebeurtenis met een uitvoerbinding naar hetzelfde Redis-exemplaar. De setgebeurtenis activeert de cache en de uitvoerbinding retourneert een verwijderopdracht voor de sleutel die de functie heeft geactiveerd.

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;
    }
}

In dit voorbeeld ziet u een pub/subtrigger voor de set-gebeurtenis met een uitvoerbinding naar hetzelfde Redis-exemplaar. De setgebeurtenis activeert de cache en de uitvoerbinding retourneert een verwijderopdracht voor de sleutel die de functie heeft geactiveerd.

De bindingen worden gedefinieerd in dit bestand 'function.json':

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

Deze code uit het index.js bestand neemt de sleutel van de trigger en retourneert deze naar de uitvoerbinding om het item in de cache te verwijderen.

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

In dit voorbeeld ziet u een pub/subtrigger voor de set-gebeurtenis met een uitvoerbinding naar hetzelfde Redis-exemplaar. De setgebeurtenis activeert de cache en de uitvoerbinding retourneert een verwijderopdracht voor de sleutel die de functie heeft geactiveerd.

De bindingen worden gedefinieerd in dit function.json bestand:

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

Deze code van het run.ps1 bestand neemt de sleutel van de trigger en geeft deze door aan de uitvoerbinding om het item in de cache te verwijderen.

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

In dit voorbeeld ziet u een pub/subtrigger voor de set-gebeurtenis met een uitvoerbinding naar hetzelfde Redis-exemplaar. De setgebeurtenis activeert de cache en de uitvoerbinding retourneert een verwijderopdracht voor de sleutel die de functie heeft geactiveerd.

De bindingen worden gedefinieerd in dit function.json bestand:

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

Deze code van het __init__.py bestand neemt de sleutel van de trigger en geeft deze door aan de uitvoerbinding om het item in de cache te verwijderen.

import logging

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

Kenmerken

Notitie

Alle opdrachten worden ondersteund voor deze binding.

De manier waarop u een parameter voor uitvoerbinding definieert, is afhankelijk van of uw C#-functies worden uitgevoerd in proces of in een geïsoleerd werkproces.

De uitvoerbinding wordt op deze manier gedefinieerd:

Definitie Opmerking Beschrijving
Op een out parameter [Redis(<Connection>, <Command>)] out string <Return_Variable> De tekenreeksvariabele die door de methode wordt geretourneerd, is een sleutelwaarde die door de binding wordt gebruikt om de opdracht uit te voeren op de specifieke cache.

In dit geval is het type dat door de methode wordt geretourneerd een sleutelwaarde die door de binding wordt gebruikt om de opdracht uit te voeren op de specifieke cache.

Wanneer uw functie meerdere uitvoerbindingen heeft, kunt u in plaats daarvan het bindingskenmerk toepassen op de eigenschap van een type dat een sleutelwaarde is, die door de binding wordt gebruikt om de opdracht uit te voeren op basis van de specifieke cache. Zie Meerdere uitvoerbindingen voor meer informatie.


Ongeacht de C#-procesmodus worden dezelfde eigenschappen ondersteund door het kenmerk uitvoerbinding:

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 in de cache, zoals: DEL.

Aantekeningen

De RedisOutput 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 in de cache, zoals: DEL.

Configuratie

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

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 in de cache, zoals: DEL.

Zie de sectie Voorbeeld voor volledige voorbeelden.

Gebruik

De uitvoer retourneert een tekenreeks, die de sleutel is van de cachevermelding waarop de specifieke opdracht wordt toegepast.

Er zijn drie typen verbindingen die zijn toegestaan van een Azure Functions-exemplaar naar een Redis Cache in uw implementaties. Voor lokale ontwikkeling kunt u ook service-principalgeheimen gebruiken. Gebruik de appsettings opdracht om elk van de volgende typen clientverificatie te configureren, ervan uitgaande dat de Connection functie is ingesteld Redis op.