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.