Share via


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.

Viktigt!

Node.js v4-modellen för Functions stöds ännu inte av Azure Cache for Redis-tillägget. Mer information om hur v4-modellen fungerar finns i utvecklarguiden för Azure Functions Node.js. Mer information om skillnaderna mellan v3 och v4 finns i migreringsguiden.

Viktigt!

Python v2-modellen för Functions stöds ännu inte av Azure Cache for Redis-tillägget. Mer information om hur v2-modellen fungerar finns i utvecklarhandboken för Azure Functions Python.

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) försöker igen 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) försöker igen 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 + "'")

I konfigurationsavsnittet förklaras dessa egenskaper.

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

Attributegenskap beskrivning
Connection Namnet på programinställningen som innehåller cacheminnet anslutningssträng, till exempel:<cacheName>.redis.cache.windows.net:6380,password...
Command Redis-cli-kommandot som ska köras i cachen med alla argument avgränsade med blanksteg, till exempel: GET key, HGET key field.

Kommentarer

Kommentaren RedisInput stöder följande egenskaper:

Property beskrivning
name Namnet på den specifika indatabindningen.
connection Namnet på programinställningen som innehåller cacheminnet anslutningssträng, till exempel:<cacheName>.redis.cache.windows.net:6380,password...
command Redis-cli-kommandot som ska köras i cachen med alla argument avgränsade med blanksteg, till exempel: GET key eller HGET key field.

Konfiguration

I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i function.json-filen.

function.json egenskap beskrivning
connection Namnet på programinställningen som innehåller cacheminnet anslutningssträng, till exempel:<cacheName>.redis.cache.windows.net:6380,password...
command Redis-cli-kommandot som ska köras i cachen med alla argument avgränsade med blanksteg, till exempel: GET key, HGET key field.

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.

Användning

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.