Partager via


liaison de sortie Azure Cache pour Redis pour Azure Functions

Les liaisons de sortie Azure Cache pour Redis vous permettent de modifier les clés d’un cache en fonction d’un ensemble de déclencheurs disponibles sur le cache.

Pour plus d’informations sur les détails d’installation et de configuration, consultez la vue d’ensemble.

Important

Le modèle Node.js v4 pour Functions n’est pas encore pris en charge par l’extension Azure Cache pour Redis. Pour plus d’informations sur le fonctionnement du modèle v4, reportez-vous au guide du développeur Azure Functions Node.js. Pour plus d’informations sur les différences entre v3 et v4, consultez le guide de migration.

Important

Le modèle Python v2 pour Functions n’est pas encore pris en charge par l’extension Azure Cache pour Redis. Pour plus d’informations sur le fonctionnement du modèle v2, consultez le guide du développeur Python sur Azure Functions.

Exemple

Une fonction C# peut être créée à l’aide de l’un des modes C# suivants :

  • Modèle worker isolé : fonction C# compilée exécutée dans un processus worker isolé du runtime. Le processus Worker isolé est requis pour prendre en charge les fonctions C# exécutées sur les versions LTS et non-LTS de .NET et de .NET Framework. Les extensions pour les fonctions de processus de travail isolés utilisent des espaces de noms Microsoft.Azure.Functions.Worker.Extensions.*.
  • Modèle In-process : fonction C# compilée exécutée dans le même processus que le runtime Functions. Dans une variation de ce modèle, Functions peut être exécuté à l’aide de scripts C#, principalement pris en charge pour la modification du portail C#. Les extensions pour les fonctions in-process utilisent des espaces de noms Microsoft.Azure.WebJobs.Extensions.*.

L’exemple suivant montre un déclencheur pub/sub sur l’événement set avec une liaison de sortie à la même instance Redis. L’événement set déclenche le cache et la liaison de sortie retourne une commande delete pour la clé qui a déclenché la fonction.

Important

Pour les fonctions .NET, il est recommandé d’utiliser le modèle de Worker isolé plutôt que le modèle in-process. Pour une comparaison des modèles worker in-process et isolés , consultez les différences entre le modèle worker isolé et le modèle in-process pour .NET sur Azure Functions.


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

L’exemple suivant montre un déclencheur pub/sub sur l’événement set avec une liaison de sortie à la même instance Redis. L’événement set déclenche le cache et la liaison de sortie retourne une commande delete pour la clé qui a déclenché la fonction.

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

Cet exemple montre un déclencheur pub/sub sur l’événement set avec une liaison de sortie à la même instance Redis. L’événement set déclenche le cache et la liaison de sortie retourne une commande delete pour la clé qui a déclenché la fonction.

Les liaisons sont définies dans ce fichier « 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"
}

Ce code du index.js fichier prend la clé du déclencheur et le retourne à la liaison de sortie pour supprimer l’élément mis en cache.

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

Cet exemple montre un déclencheur pub/sub sur l’événement set avec une liaison de sortie à la même instance Redis. L’événement set déclenche le cache et la liaison de sortie retourne une commande delete pour la clé qui a déclenché la fonction.

Les liaisons sont définies dans ce function.json fichier :

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

Ce code du run.ps1 fichier prend la clé du déclencheur et le transmet à la liaison de sortie pour supprimer l’élément mis en cache.

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

Cet exemple montre un déclencheur pub/sub sur l’événement set avec une liaison de sortie à la même instance Redis. L’événement set déclenche le cache et la liaison de sortie retourne une commande delete pour la clé qui a déclenché la fonction.

Les liaisons sont définies dans ce function.json fichier :

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

Ce code du __init__.py fichier prend la clé du déclencheur et le transmet à la liaison de sortie pour supprimer l’élément mis en cache.

import logging

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

Attributs

Remarque

Toutes les commandes sont prises en charge pour cette liaison.

La façon dont vous définissez un paramètre de liaison de sortie dépend de l’exécution de vos fonctions C# dans le processus ou dans un processus worker isolé.

La liaison de sortie est définie de cette façon :

Définition Exemple Description
Sur un out paramètre [Redis(<Connection>, <Command>)] out string <Return_Variable> La variable de chaîne retournée par la méthode est une valeur clé que la liaison utilise pour exécuter la commande sur le cache spécifique.

Dans ce cas, le type retourné par la méthode est une valeur clé que la liaison utilise pour exécuter la commande sur le cache spécifique.

Lorsque votre fonction a plusieurs liaisons de sortie, vous pouvez à la place appliquer l’attribut de liaison à la propriété d’un type qui est une valeur de clé, que la liaison utilise pour exécuter la commande sur le cache spécifique. Pour plus d’informations, consultez Plusieurs liaisons de sortie.


Quel que soit le mode de processus C#, les mêmes propriétés sont prises en charge par l’attribut de liaison de sortie :

Propriété d’attribut Description
Connection Nom du paramètre d’application qui contient le cache chaîne de connexion, par exemple :<cacheName>.redis.cache.windows.net:6380,password...
Command Commande redis-cli à exécuter sur le cache, par exemple : DEL.

Annotations

L’annotation RedisOutput prend en charge ces propriétés :

Propriété Description
name Nom de la liaison d’entrée spécifique.
connection Nom du paramètre d’application qui contient le cache chaîne de connexion, par exemple :<cacheName>.redis.cache.windows.net:6380,password...
command Commande redis-cli à exécuter sur le cache, par exemple : DEL.

Configuration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json.

Propriété Description
name Nom de la liaison d’entrée spécifique.
connection Nom du paramètre d’application qui contient le cache chaîne de connexion, par exemple :<cacheName>.redis.cache.windows.net:6380,password...
command Commande redis-cli à exécuter sur le cache, par exemple : DEL.

Pour obtenir des exemples complets, consultez la section Exemple.

Utilisation

La sortie retourne une chaîne, qui est la clé de l’entrée de cache sur laquelle applique la commande spécifique.

Il existe trois types de connexions autorisées à partir d’une instance Azure Functions vers un cache Redis dans vos déploiements. Pour le développement local, vous pouvez également utiliser des secrets de principal de service. Utilisez la appsettings commande pour configurer chacun des types d’authentification client suivants, en supposant que le Connection paramètre a été défini Redis dans la fonction.