Azure Cache for Redis bemeneti kötés az Azure Functionshez (előzetes verzió)

Egy függvény futtatásakor az Azure Cache for Redis bemeneti kötés adatokat kér le a gyorsítótárból, és bemeneti paraméterként továbbítja azokat a függvénynek.

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.* .

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.

A következő kód a pub/al trigger kulcsával szerzi be és naplózza az értéket egy bemeneti kötésből egy GET parancs használatával:

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}'");
        }
    }
}

Az Azure Cache for Redis bemeneti kötéséhez további minták érhetők el a GitHub-adattárban.

A következő kód a pub/al trigger kulcsával szerzi be és naplózza az értéket egy bemeneti kötésből egy GET parancs használatával:

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 + "'");
    }
}

Ez a function.json meghatároz egy pub/al eseményindítót és egy bemeneti kötést a GET üzenethez egy Azure Cache for Redis-példányon:

{
    "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"
}

Ez a JavaScript-kód (index.js) újrapróbálkozza és naplózza a pub/al trigger által biztosított kulcshoz kapcsolódó gyorsítótárazott értéket.


module.exports = async function (context, key, value) {
    context.log("Key '" + key + "' was set to value '" + value + "'");
}

Ez a function.json meghatároz egy pub/al eseményindítót és egy bemeneti kötést a GET üzenethez egy Azure Cache for Redis-példányon:

{
    "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"
}

Ez a PowerShell-kód (a run.ps1-ből) lekéri és naplózza a pub/al trigger által biztosított kulcshoz kapcsolódó gyorsítótárazott értéket.

param($key, $value, $TriggerMetadata)
Write-Host "Key '$key' was set to value '$value'"

Az alábbi példa egy pub/al eseményindítót használ, amelynek bemeneti kötése van a GET üzenethez egy Azure Cache for Redis-példányon. A példa attól függ, hogy a v1 vagy v2 Python programozási modellt használja-e.

Ez a function.json meghatároz egy pub/al eseményindítót és egy bemeneti kötést a GET üzenethez egy Azure Cache for Redis-példányon:

{
    "bindings": [
        {
            "type": "redisPubSubTrigger",
            "connection": "redisConnectionString",
            "channel": "__keyevent@0__:set",
            "name": "key",
            "direction": "in"
        },
        {
            "type": "redis",
            "connection": "redisConnectionString",
            "command": "GET {Message}",
            "name": "value",
            "direction": "in"
        }
    ]
}

Ez a Python-kód (__init__.py) újrapróbálkozó és naplózza a pub/al trigger által biztosított kulcshoz kapcsolódó gyorsítótárazott értéket:


import logging

def main(key: str, value: str):
    logging.info("Key '" + key + "' was set to value '" + value + "'")

A konfigurációs szakasz ezeket a tulajdonságokat ismerteti.

Attribútumok

Feljegyzés

Ehhez a kötéshez nem minden parancs támogatott. Jelenleg csak az egyetlen kimenetet visszaíró olvasási parancsok támogatottak. A teljes lista itt található

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 szóközökkel elválasztott összes argumentummal, például: GET key, HGET key field.

Jegyzetek

A RedisInput 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 szóközökkel elválasztott összes argumentummal, például: GET key vagy HGET key field.

Konfiguráció

Az alábbi táblázat a function.json fájlban beállított kötéskonfigurációs tulajdonságokat ismerteti.

function.json tulajdonsá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 szóközökkel elválasztott összes argumentummal, például: GET key, HGET key field.

Feljegyzés

A Függvényekhez készült Python v2 és Node.js v4 nem function.json a függvény definiálásához. Az Azure Redis Cache-kötések jelenleg nem támogatják mindkét új nyelvi verziót.

A teljes példákért tekintse meg a Példa szakaszt .

Használat

A bemeneti kötés egy sztringet vár a gyorsítótárból.

Ha egyéni típust használ kötési paraméterként, a bővítmény megpróbál deszerializálni egy JSON-formátumú sztringet ennek a paraméternek az egyéni típusába.