Compartilhar via


Associação de entrada do Cache do Azure para Redis para Azure Functions

Quando uma função é executada, a associação de entrada do Cache do Azure para Redis recupera dados de um cache e os passa para sua função como um parâmetro de entrada.

Para obter informações sobre a instalação e detalhes de configuração, confira a visão geral.

Escopo de disponibilidade para associações de funções

Tipo de associação Redis Gerenciado do Azure Cache do Azure para Redis
Entrada Sim Sim

Importante

Ao usar o Azure Managed Redis ou as camadas Enterprise do Cache do Azure para Redis, use a porta 10000 em vez da porta 6380 ou 6379.

Importante

O modelo Node.js v4 para Functions ainda não tem suporte na extensão Cache do Azure para Redis. Para obter mais detalhes sobre como funciona o modelo v4, consulte o Guia do desenvolvedor do Node.js para o Azure Functions. Para saber mais sobre as diferenças entre os modelos v3 e a v4, consulte o Guia de migração.

Importante

O modelo Python v2 para Functions ainda não é compatível com a extensão Cache do Azure para Redis. Para obter mais detalhes sobre como funciona o modelo v2, consulte o Guia de desenvolvedor do Node.js para Azure Functions.

Exemplo

A função C# pode ser criada por meio de um dos seguintes modos C#:

  • Modelo de trabalho isolado: função C# compilada executada em um processo de trabalho que está isolado do runtime. É necessário um processo de trabalho isolado para dar suporte às funções C# executadas nas versões LTS e não LTS do .NET e do .NET Framework. As extensões para funções do processo de trabalho isoladas usam namespaces Microsoft.Azure.Functions.Worker.Extensions.*.
  • Modelo em processo: função C# compilada no mesmo processo que o runtime do Functions. Em uma variação desse modelo, o Functions pode ser executado usando scripts C#, que é compatível principalmente com a edição do portal C#. As extensões para funções dentro do processo usam namespaces Microsoft.Azure.WebJobs.Extensions.*.

Importante

Para funções .NET, é recomendado usar o modelo de trabalho isolado em vez do modelo em processo. Para obter uma comparação dos modelos de trabalho em processo e isolados, consulte as diferenças entre o modelo de trabalho isolado e o modelo em processo para .NET no Azure Functions.

O código a seguir usa a chave do gatilho pub/sub para obter e registrar o valor de uma associação de entrada usando um GET comando:

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

Mais exemplos para a associação de entrada do Cache do Azure para Redis estão disponíveis no repositório GitHub.

O código a seguir usa a chave do gatilho pub/sub para obter e registrar o valor de uma associação de entrada usando um GET comando:

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

Este function.json define um gatilho pub/sub e uma associação de entrada para a mensagem GET em uma instância do Cache do Azure para Redis:

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

Esse código JavaScript (do index.js) recupera e registra o valor armazenado em cache relacionado à chave fornecida pelo gatilho pub/sub.


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

Este function.json define um gatilho pub/sub e uma associação de entrada para a mensagem GET em uma instância do Cache do Azure para Redis:

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

Esse código do PowerShell (de run.ps1) recupera e registra o valor armazenado em cache relacionado à chave fornecida pelo gatilho pub/sub.

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

O exemplo a seguir usa um gatilho pub/sub com uma associação de entrada para a mensagem GET em uma instância do Cache do Azure para Redis. O exemplo depende do modelo de programação v1 ou v2 do Python que você usa.

Este function.json define um gatilho pub/sub e uma associação de entrada para a mensagem GET em uma instância do Cache do Azure para Redis:

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

Este código Python (do __init__.py) recupera e registra o valor armazenado em cache relacionado à chave fornecida pelo gatilho pub/sub:


import logging

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

A seção configuração explica essas propriedades.

Atributos

Observação

Nem todos os comandos têm suporte para essa associação. No momento, apenas comandos de leitura que retornam uma única saída são suportados. A lista completa pode ser encontrada aqui

Propriedade de atributo Descrição
Connection O nome da configuração do aplicativo que contém a cadeia de conexão de cache, como:<cacheName>.redis.cache.windows.net:6380,password...
Command O comando redis-cli a ser executado no cache com todos os argumentos separados por espaços, como: GET key, HGET key field.

Anotações

A RedisInput anotação suporta estas propriedades:

Propriedade Descrição
name O nome da associação de entrada específica.
connection O nome da configuração do aplicativo que contém a cadeia de conexão de cache, como:<cacheName>.redis.cache.windows.net:6380,password...
command O comando redis-cli a ser executado no cache com todos os argumentos separados por espaços, como: GET key ou HGET key field.

Configuração

A tabela a seguir explica as propriedades de configuração de associação que você define no arquivo function.json.

Propriedade function.json Descrição
connection O nome da configuração do aplicativo que contém a cadeia de conexão de cache, como:<cacheName>.redis.cache.windows.net:6380,password...
command O comando redis-cli a ser executado no cache com todos os argumentos separados por espaços, como: GET key, HGET key field.

Observação

O Python v2 e o Node.js v4 para funções não usam function.json para definir a função. No momento, essas duas novas versões de idioma não têm suporte nas associações do Cache Redis do Azure.

Consulte a Seção de exemplo para obter exemplos completos.

Uso

A associação de entrada espera receber uma cadeia de caracteres do cache.

Quando você usa um tipo personalizado como o parâmetro de associação, a extensão tenta desserializar uma cadeia de caracteres formatada em JSON no tipo personalizado desse parâmetro.