Azure Cache for Redis kimeneti kötés az Azure Functionshez
Az Azure Cache for Redis kimeneti kötései lehetővé teszi a gyorsítótár kulcsainak módosítását a gyorsítótárban elérhető triggerek készlete alapján.
A beállítással és a konfigurációval kapcsolatos információkért tekintse meg az áttekintést.
Fontos
A Functions Node.js v4-modelljét az Azure Cache for Redis bővítmény még nem támogatja. A v4-modell működésével kapcsolatos további információkért tekintse meg az Azure Functions Node.js fejlesztői útmutatóját. A v3 és a v4 közötti különbségekről a migrálási útmutatóban olvashat bővebben.
Fontos
A Functions Python v2-modelljét még nem támogatja az Azure Cache for Redis bővítmény. A v2-modell működésével kapcsolatos további részletekért tekintse meg az Azure Functions Python fejlesztői útmutatóját.
Példa
A C#-függvények a következő C#-módok egyikével hozhatók létre:
- Izolált feldolgozómodell: Lefordított C# függvény, amely a futtatókörnyezettől elkülönített feldolgozói folyamatban fut. Izolált feldolgozói folyamat szükséges az LTS- és nem LTS-verziókon futó C#-függvények támogatásához .NET és .NET-keretrendszer. Az izolált feldolgozói folyamatfüggvények bővítményei névtereket használnak
Microsoft.Azure.Functions.Worker.Extensions.*
. - Folyamaton belüli modell: Lefordított C# függvény, amely ugyanabban a folyamatban fut, mint a Functions-futtatókörnyezet. A modell egy változatában a Functions C#-szkriptekkel futtatható, amely elsősorban a C#-portál szerkesztéséhez támogatott. A folyamaton belüli függvények bővítményei névtereket használnak
Microsoft.Azure.WebJobs.Extensions.*
.
Az alábbi példa egy pub/al eseményindítót mutat be a beállított eseményen, amely ugyanahhoz a Redis-példányhoz tartozó kimeneti kötéssel rendelkezik. A beállított esemény aktiválja a gyorsítótárat, a kimeneti kötés pedig a függvényt aktiváló kulcs törlési parancsát adja vissza.
Fontos
A .NET-függvények esetében az izolált feldolgozói modell használata javasolt a folyamaton belüli modellen keresztül. A folyamaton belüli és az izolált feldolgozói modellek összehasonlításához tekintse meg az izolált feldolgozói modell és az Azure Functions .NET-hez készült folyamaton belüli modellje közötti különbségeket.
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 };
}
}
}
Az alábbi példa egy pub/al eseményindítót mutat be a beállított eseményen, amely ugyanahhoz a Redis-példányhoz tartozó kimeneti kötéssel rendelkezik. A beállított esemény aktiválja a gyorsítótárat, a kimeneti kötés pedig a függvényt aktiváló kulcs törlési parancsát adja vissza.
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;
}
}
Ez a példa egy pub/al eseményindítót mutat be a beállított eseményen egy kimeneti kötéssel ugyanarra a Redis-példányra. A beállított esemény aktiválja a gyorsítótárat, a kimeneti kötés pedig a függvényt aktiváló kulcs törlési parancsát adja vissza.
A kötések ebben a "function.json" fájlban vannak definiálva:
{
"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"
}
A fájlból származó index.js
kód átveszi a kulcsot az eseményindítóból, és visszaadja a kimeneti kötésnek a gyorsítótárazott elem törléséhez.
module.exports = async function (context, key) {
context.log("Deleting recently SET key '" + key + "'");
return key;
}
Ez a példa egy pub/al eseményindítót mutat be a beállított eseményen egy kimeneti kötéssel ugyanarra a Redis-példányra. A beállított esemény aktiválja a gyorsítótárat, a kimeneti kötés pedig a függvényt aktiváló kulcs törlési parancsát adja vissza.
A kötések ebben a fájlban function.json
vannak definiálva:
{
"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"
}
Ez a run.ps1
fájlból származó kód átveszi a kulcsot az eseményindítóból, és átadja a kimeneti kötésnek a gyorsítótárazott elem törléséhez.
param($key, $TriggerMetadata)
Write-Host "Deleting recently SET key '$key'"
Push-OutputBinding -Name retVal -Value $key
Ez a példa egy pub/al eseményindítót mutat be a beállított eseményen egy kimeneti kötéssel ugyanarra a Redis-példányra. A beállított esemény aktiválja a gyorsítótárat, a kimeneti kötés pedig a függvényt aktiváló kulcs törlési parancsát adja vissza.
A kötések ebben a fájlban function.json
vannak definiálva:
{
"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"
}
Ez a __init__.py
fájlból származó kód átveszi a kulcsot az eseményindítóból, és átadja a kimeneti kötésnek a gyorsítótárazott elem törléséhez.
import logging
def main(key: str) -> str:
logging.info("Deleting recently SET key '" + key + "'")
return key
Attribútumok
Feljegyzés
Ehhez a kötéshez minden parancs támogatott.
A kimeneti kötési paraméter definiálásának módja attól függ, hogy a C#-függvények folyamatban vagy izolált feldolgozói folyamatban futnak-e.
A kimeneti kötés a következőképpen van definiálva:
Definíció | Példa | Leírás |
---|---|---|
Paraméteren out |
[Redis(<Connection>, <Command>)] out string <Return_Variable> |
A metódus által visszaadott sztringváltozó egy kulcsérték, amelyet a kötés a parancs adott gyorsítótáron való végrehajtásához használ. |
Ebben az esetben a metódus által visszaadott típus egy kulcsérték, amelyet a kötés a parancs adott gyorsítótáron való végrehajtásához használ.
Ha a függvény több kimeneti kötéssel rendelkezik, a kötési attribútumot alkalmazhatja egy kulcsértéket tartalmazó típus tulajdonságára, amelyet a kötés a parancs adott gyorsítótáron való végrehajtására használ. További információ: Több kimeneti kötés.
A C# folyamatmódtól függetlenül ugyanazokat a tulajdonságokat támogatja a kimeneti kötés attribútuma:
Attribútumtulajdonság | Leírás |
---|---|
Connection |
A gyorsítótárat kapcsolati sztring tartalmazó alkalmazásbeállítás neve, például:<cacheName>.redis.cache.windows.net:6380,password... |
Command |
A gyorsítótárban végrehajtandó redis-cli parancs, például: DEL . |
Jegyzetek
A RedisOutput
széljegyzet a következő tulajdonságokat támogatja:
Tulajdonság | Leírás |
---|---|
name |
Az adott bemeneti kötés neve. |
connection |
A gyorsítótárat kapcsolati sztring tartalmazó alkalmazásbeállítás neve, például:<cacheName>.redis.cache.windows.net:6380,password... |
command |
A gyorsítótárban végrehajtandó redis-cli parancs, például: DEL . |
Konfiguráció
Az alábbi táblázat a function.json fájlban beállított kötéskonfigurációs tulajdonságokat ismerteti.
Tulajdonság | Leírás |
---|---|
name |
Az adott bemeneti kötés neve. |
connection |
A gyorsítótárat kapcsolati sztring tartalmazó alkalmazásbeállítás neve, például:<cacheName>.redis.cache.windows.net:6380,password... |
command |
A gyorsítótárban végrehajtandó redis-cli parancs, például: DEL . |
A teljes példákért tekintse meg a Példa szakaszt .
Használat
A kimenet egy sztringet ad vissza, amely annak a gyorsítótár-bejegyzésnek a kulcsa, amelyre az adott parancsot alkalmazza.
Egy Azure Functions-példány háromféle kapcsolatot engedélyez egy Redis Cache-hez az üzemelő példányokban. A helyi fejlesztéshez szolgáltatásnév-titkos kódokat is használhat. appsettings
A következő ügyfélhitelesítési típusok konfigurálásához használja az alábbi típusú ügyfél-hitelesítést, feltéve, hogy Redis
a Connection
függvényben a beállítás be van állítva.