Partager via


liaison d’entrée Azure Cache pour Redis pour Azure Functions

Lorsqu’une fonction s’exécute, la liaison d’entrée Azure Cache pour Redis récupère les données d’un cache et les transmet à votre fonction en tant que paramètre d’entrée.

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.*.

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.

Le code suivant utilise la clé du déclencheur pub/sub pour obtenir et enregistrer la valeur d’une liaison d’entrée à l’aide d’une GET commande :

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

D’autres exemples pour la liaison d’entrée Azure Cache pour Redis sont disponibles dans le référentiel GitHub.

Le code suivant utilise la clé du déclencheur pub/sub pour obtenir et enregistrer la valeur d’une liaison d’entrée à l’aide d’une GET commande :

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

Cette function.json définit à la fois un déclencheur pub/sub et une liaison d’entrée au message GET sur une instance Azure Cache pour 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"
}

Ce code JavaScript (de index.js) effectue une nouvelle tentative et enregistre la valeur mise en cache liée à la clé fournie par le déclencheur pub/sub.


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

Cette function.json définit à la fois un déclencheur pub/sub et une liaison d’entrée au message GET sur une instance Azure Cache pour 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"
}

Ce code PowerShell (à partir de run.ps1) récupère et enregistre la valeur mise en cache liée à la clé fournie par le déclencheur pub/sub.

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

L’exemple suivant utilise un déclencheur pub/sub avec une liaison d’entrée au message GET sur une instance de Azure Cache pour Redis. L’exemple varie selon l’utilisation du modèle de programmation Python v1 ou v2.

Cette function.json définit à la fois un déclencheur pub/sub et une liaison d’entrée au message GET sur une instance Azure Cache pour 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"
        }
    ]
}

Ce code Python (à partir de __init__.py) effectue une nouvelle tentative et consigne la valeur mise en cache liée à la clé fournie par le déclencheur pub/sub :


import logging

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

La section configuration décrit ces propriétés.

Attributs

Remarque

Toutes les commandes ne sont pas prises en charge pour cette liaison. Pour le moment, seules les commandes de lecture qui retournent une seule sortie sont prises en charge. La liste complète est disponible ici

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 avec tous les arguments séparés par des espaces, tels que : GET key, HGET key field.

Annotations

L’annotation RedisInput 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 avec tous les arguments séparés par des espaces, tels que : GET key ou HGET key field.

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é function.json 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 avec tous les arguments séparés par des espaces, tels que : GET key, HGET key field.

Remarque

Python v2 et Node.js v4 pour Functions n’utilisent pas function.json pour définir la fonction. Ces nouvelles versions de langage ne sont actuellement pas prises en charge par les liaisons du Cache Redis Azure.

Pour obtenir des exemples complets, consultez la section Exemple.

Utilisation

La liaison d’entrée s’attend à recevoir une chaîne du cache.

Lorsque vous utilisez un type personnalisé comme paramètre de liaison, l’extension tente de désérialiser une chaîne au format JSON dans le type personnalisé de ce paramètre.