Azure Cache voor Redis uitvoerbinding voor Azure Functions
Met de Azure Cache voor Redis uitvoerbindingen kunt u de sleutels in een cache wijzigen op basis van een set beschikbare triggers in de cache.
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.
In het volgende voorbeeld ziet u een pub/subtrigger voor de set-gebeurtenis met een uitvoerbinding naar hetzelfde Redis-exemplaar. De setgebeurtenis activeert de cache en de uitvoerbinding retourneert een verwijderopdracht voor de sleutel die de functie heeft geactiveerd.
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.
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 };
}
}
}
In het volgende voorbeeld ziet u een pub/subtrigger voor de set-gebeurtenis met een uitvoerbinding naar hetzelfde Redis-exemplaar. De setgebeurtenis activeert de cache en de uitvoerbinding retourneert een verwijderopdracht voor de sleutel die de functie heeft geactiveerd.
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;
}
}
In dit voorbeeld ziet u een pub/subtrigger voor de set-gebeurtenis met een uitvoerbinding naar hetzelfde Redis-exemplaar. De setgebeurtenis activeert de cache en de uitvoerbinding retourneert een verwijderopdracht voor de sleutel die de functie heeft geactiveerd.
De bindingen worden gedefinieerd in dit bestand '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"
}
Deze code uit het index.js
bestand neemt de sleutel van de trigger en retourneert deze naar de uitvoerbinding om het item in de cache te verwijderen.
module.exports = async function (context, key) {
context.log("Deleting recently SET key '" + key + "'");
return key;
}
In dit voorbeeld ziet u een pub/subtrigger voor de set-gebeurtenis met een uitvoerbinding naar hetzelfde Redis-exemplaar. De setgebeurtenis activeert de cache en de uitvoerbinding retourneert een verwijderopdracht voor de sleutel die de functie heeft geactiveerd.
De bindingen worden gedefinieerd in dit function.json
bestand:
{
"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"
}
Deze code van het run.ps1
bestand neemt de sleutel van de trigger en geeft deze door aan de uitvoerbinding om het item in de cache te verwijderen.
param($key, $TriggerMetadata)
Write-Host "Deleting recently SET key '$key'"
Push-OutputBinding -Name retVal -Value $key
In dit voorbeeld ziet u een pub/subtrigger voor de set-gebeurtenis met een uitvoerbinding naar hetzelfde Redis-exemplaar. De setgebeurtenis activeert de cache en de uitvoerbinding retourneert een verwijderopdracht voor de sleutel die de functie heeft geactiveerd.
De bindingen worden gedefinieerd in dit function.json
bestand:
{
"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"
}
Deze code van het __init__.py
bestand neemt de sleutel van de trigger en geeft deze door aan de uitvoerbinding om het item in de cache te verwijderen.
import logging
def main(key: str) -> str:
logging.info("Deleting recently SET key '" + key + "'")
return key
Kenmerken
Notitie
Alle opdrachten worden ondersteund voor deze binding.
De manier waarop u een parameter voor uitvoerbinding definieert, is afhankelijk van of uw C#-functies worden uitgevoerd in proces of in een geïsoleerd werkproces.
De uitvoerbinding wordt op deze manier gedefinieerd:
Definitie | Opmerking | Beschrijving |
---|---|---|
Op een out parameter |
[Redis(<Connection>, <Command>)] out string <Return_Variable> |
De tekenreeksvariabele die door de methode wordt geretourneerd, is een sleutelwaarde die door de binding wordt gebruikt om de opdracht uit te voeren op de specifieke cache. |
In dit geval is het type dat door de methode wordt geretourneerd een sleutelwaarde die door de binding wordt gebruikt om de opdracht uit te voeren op de specifieke cache.
Wanneer uw functie meerdere uitvoerbindingen heeft, kunt u in plaats daarvan het bindingskenmerk toepassen op de eigenschap van een type dat een sleutelwaarde is, die door de binding wordt gebruikt om de opdracht uit te voeren op basis van de specifieke cache. Zie Meerdere uitvoerbindingen voor meer informatie.
Ongeacht de C#-procesmodus worden dezelfde eigenschappen ondersteund door het kenmerk uitvoerbinding:
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 in de cache, zoals: DEL . |
Aantekeningen
De RedisOutput
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 in de cache, zoals: DEL . |
Configuratie
In de volgende tabel worden de bindingsconfiguratie-eigenschappen uitgelegd die u in het function.json-bestand hebt ingesteld.
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 in de cache, zoals: DEL . |
Zie de sectie Voorbeeld voor volledige voorbeelden.
Gebruik
De uitvoer retourneert een tekenreeks, die de sleutel is van de cachevermelding waarop de specifieke opdracht wordt toegepast.
Er zijn drie typen verbindingen die zijn toegestaan van een Azure Functions-exemplaar naar een Redis Cache in uw implementaties. Voor lokale ontwikkeling kunt u ook service-principalgeheimen gebruiken. Gebruik de appsettings
opdracht om elk van de volgende typen clientverificatie te configureren, ervan uitgaande dat de Connection
functie is ingesteld Redis
op.