Azure Cache for Redis-indatabindning för Azure Functions
När en funktion körs hämtar Azure Cache for Redis-indatabindningen data från en cache och skickar dem till din funktion som indataparameter.
Information om konfiguration och konfigurationsinformation finns i översikten.
Omfång för tillgänglighet för funktionsbindningar
Bindningstyp | Azure Managed Redis | Azure Cache for Redis |
---|---|---|
Indata | Ja | Ja |
Viktigt!
När du använder Azure Managed Redis eller Enterprise-nivåerna i Azure Cache for Redis använder du port 10000 i stället för port 6380 eller 6379.
Exempel
En C#-funktion kan skapas med något av följande C#-lägen:
- Isolerad arbetsmodell: Kompilerad C#-funktion som körs i en arbetsprocess som är isolerad från körningen. Isolerad arbetsprocess krävs för att stödja C#-funktioner som körs på LTS- och icke-LTS-versioner .NET och .NET Framework. Tillägg för isolerade arbetsprocessfunktioner använder
Microsoft.Azure.Functions.Worker.Extensions.*
namnområden. - Processmodell: Kompilerad C#-funktion som körs i samma process som Functions-körningen. I en variant av den här modellen kan Functions köras med C#-skript, vilket främst stöds för redigering av C#-portalen. Tillägg för in-process-funktioner använder
Microsoft.Azure.WebJobs.Extensions.*
namnområden.
Viktigt!
För .NET-funktioner rekommenderas användning av den isolerade arbetsmodellen över den pågående modellen. En jämförelse av de processbaserade och isolerade arbetsmodellerna finns i skillnader mellan den isolerade arbetsmodellen och den processbaserade modellen för .NET på Azure Functions.
Följande kod använder nyckeln från pub/sub-utlösaren för att hämta och logga värdet från en indatabindning med hjälp av ett GET
kommando:
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}'");
}
}
}
Fler exempel för Azure Cache for Redis-indatabindningen finns på GitHub-lagringsplatsen.
Följande kod använder nyckeln från pub/sub-utlösaren för att hämta och logga värdet från en indatabindning med hjälp av ett GET
kommando:
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 + "'");
}
}
Den här function.json definierar både en pub/sub-utlösare och en indatabindning till GET-meddelandet på en Azure Cache for Redis-instans:
{
"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"
}
Den här JavaScript-koden (från index.js) hämtar och loggar det cachelagrade värdet som är relaterat till nyckeln som tillhandahålls av pub/sub-utlösaren.
module.exports = async function (context, key, value) {
context.log("Key '" + key + "' was set to value '" + value + "'");
}
Den här function.json definierar både en pub/sub-utlösare och en indatabindning till GET-meddelandet på en Azure Cache for Redis-instans:
{
"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"
}
Den här PowerShell-koden (från run.ps1) hämtar och loggar det cachelagrade värdet som är relaterat till nyckeln som tillhandahålls av pub/sub-utlösaren.
param($key, $value, $TriggerMetadata)
Write-Host "Key '$key' was set to value '$value'"
I följande exempel används en pub/sub-utlösare med en indatabindning till GET-meddelandet på en Azure Cache for Redis-instans. Exemplet beror på om du använder python-programmeringsmodellen v1 eller v2.
Den här function.json definierar både en pub/sub-utlösare och en indatabindning till GET-meddelandet på en Azure Cache for Redis-instans:
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "__keyevent@0__:set",
"name": "key",
"direction": "in"
},
{
"type": "redis",
"connection": "redisConnectionString",
"command": "GET {Message}",
"name": "value",
"direction": "in"
}
]
}
Den här Python-koden (från __init__.py) hämtar och loggar det cachelagrade värdet som är relaterat till nyckeln som tillhandahålls av pub/sub-utlösaren:
import logging
def main(key: str, value: str):
logging.info("Key '" + key + "' was set to value '" + value + "'")
Attribut
Kommentar
Alla kommandon stöds inte för den här bindningen. För närvarande stöds endast läskommandon som returnerar ett enda utdata. Den fullständiga listan finns här
Kommentarer
Kommentaren RedisInput
stöder följande egenskaper:
Konfiguration
I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i function.json-filen.
Kommentar
Python v2 och Node.js v4 för Functions använder inte function.json för att definiera funktionen. Båda dessa nya språkversioner stöds för närvarande inte av Azure Redis Cache-bindningar.
Se avsnittet Exempel för fullständiga exempel.
Förbrukning
Indatabindningen förväntar sig att ta emot en sträng från cacheminnet.
När du använder en anpassad typ som bindningsparameter försöker tillägget deserialisera en JSON-formaterad sträng till den anpassade typen av den här parametern.