Megosztás a következőn keresztül:


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.