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.
Étendue de la disponibilité pour les liaisons de fonctions
Type de liaison | Redis managé par Azure | Cache Azure pour Redis |
---|---|---|
Sortie | Oui | Oui |
Important
Lorsque vous utilisez Azure Managed Redis ou les niveaux Entreprise de Azure Cache pour Redis, utilisez le port 10000 plutôt que le port 6380 ou 6379.
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 le 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.