Azure Cache voor Redis invoerbinding voor Azure Functions
Wanneer een functie wordt uitgevoerd, haalt de Azure Cache voor Redis invoerbinding gegevens op uit een cache en geeft deze als invoerparameter door aan uw functie.
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.
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.
De volgende code gebruikt de sleutel van de pub/subtrigger om de waarde van een invoerbinding te verkrijgen en te registreren met behulp van een GET
opdracht:
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}'");
}
}
}
Meer voorbeelden voor de Azure Cache voor Redis invoerbinding zijn beschikbaar in de GitHub-opslagplaats.
De volgende code gebruikt de sleutel van de pub/subtrigger om de waarde van een invoerbinding te verkrijgen en te registreren met behulp van een GET
opdracht:
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 + "'");
}
}
Deze function.json definieert zowel een pub/subtrigger als een invoerbinding voor het GET-bericht op een Azure Cache voor Redis exemplaar:
{
"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"
}
Met deze JavaScript-code (van index.js) wordt de waarde in de cache opgehaald en vastgelegd die is gerelateerd aan de sleutel die is opgegeven door de pub/subtrigger.
module.exports = async function (context, key, value) {
context.log("Key '" + key + "' was set to value '" + value + "'");
}
Deze function.json definieert zowel een pub/subtrigger als een invoerbinding voor het GET-bericht op een Azure Cache voor Redis exemplaar:
{
"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"
}
Met deze PowerShell-code (van run.ps1) wordt de waarde in de cache opgehaald en vastgelegd die is gerelateerd aan de sleutel die is opgegeven door de pub/subtrigger.
param($key, $value, $TriggerMetadata)
Write-Host "Key '$key' was set to value '$value'"
In het volgende voorbeeld wordt een pub/subtrigger gebruikt met een invoerbinding voor het GET-bericht op een Azure Cache voor Redis exemplaar. Het voorbeeld is afhankelijk van of u het python-programmeermodel v1 of v2 gebruikt.
Deze function.json definieert zowel een pub/subtrigger als een invoerbinding voor het GET-bericht op een Azure Cache voor Redis exemplaar:
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "__keyevent@0__:set",
"name": "key",
"direction": "in"
},
{
"type": "redis",
"connection": "redisConnectionString",
"command": "GET {Message}",
"name": "value",
"direction": "in"
}
]
}
Met deze Python-code (van __init__.py) wordt de waarde in de cache opgehaald en vastgelegd die is gerelateerd aan de sleutel die is opgegeven door de pub/subtrigger:
import logging
def main(key: str, value: str):
logging.info("Key '" + key + "' was set to value '" + value + "'")
In de configuratiesectie worden deze eigenschappen uitgelegd.
Kenmerken
Notitie
Niet alle opdrachten worden ondersteund voor deze binding. Op dit moment worden alleen leesopdrachten ondersteund die één uitvoer retourneren. De volledige lijst vindt u hier
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 op de cache met alle argumenten gescheiden door spaties, zoals: GET key , HGET key field . |
Aantekeningen
De RedisInput
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 op de cache met alle argumenten gescheiden door spaties, zoals: GET key of HGET key field . |
Configuratie
In de volgende tabel worden de bindingsconfiguratie-eigenschappen uitgelegd die u in het function.json-bestand hebt ingesteld.
function.json-eigenschap | 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 op de cache met alle argumenten gescheiden door spaties, zoals: GET key , HGET key field . |
Notitie
Python v2 en Node.js v4 voor Functions gebruiken geen function.json om de functie te definiëren. Beide nieuwe taalversies worden momenteel niet ondersteund door Azure Redis Cache-bindingen.
Zie de sectie Voorbeeld voor volledige voorbeelden.
Gebruik
De invoerbinding verwacht een tekenreeks uit de cache te ontvangen.
Wanneer u een aangepast type als bindingsparameter gebruikt, probeert de extensie een tekenreeks met JSON-indeling te deserialiseren in het aangepaste type van deze parameter.