Partilhar via


Vinculação de saída do Cache do Azure para Redis para o Azure Functions

As associações de saída do Cache do Azure para Redis permitem alterar as chaves em um cache com base em um conjunto de gatilhos disponíveis no cache.

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

Importante

O modelo Node.js v4 para Functions ainda não é suportado pela extensão Cache do Azure para Redis. Para obter mais detalhes sobre como o modelo v4 funciona, consulte o Guia do desenvolvedor do Azure Functions Node.js. Para saber mais sobre as diferenças entre v3 e v4, consulte o guia de migração.

Importante

O modelo Python v2 para Functions ainda não é suportado pela extensão Cache for Redis do Azure. Para obter mais detalhes sobre como o modelo v2 funciona, consulte o guia do desenvolvedor Python do Azure Functions.

Exemplo

Uma função C# pode ser criada usando um dos seguintes modos C#:

  • Modelo de trabalho isolado: função C# compilada que é executada em um processo de trabalho isolado do tempo de execução. O processo de trabalho isolado é necessário para suportar funções C# em execução nas versões LTS e não-LTS .NET e .NET Framework. As extensões para funções isoladas do processo de trabalho usam Microsoft.Azure.Functions.Worker.Extensions.* namespaces.
  • Modelo em processo: função C# compilada que é executada no mesmo processo que o tempo de execução do Functions. Em uma variação desse modelo, as funções podem ser executadas usando scripts em C#, que são suportados principalmente para edição de portal em C#. As extensões para funções em processo usam Microsoft.Azure.WebJobs.Extensions.* namespaces.

O exemplo a seguir mostra um gatilho pub/sub no evento set com uma ligação de saída para a mesma instância do Redis. O evento set aciona o cache e a ligação de saída retorna um comando delete para a chave que disparou a função.

Importante

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

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 };
        }
    }
}

O exemplo a seguir mostra um gatilho pub/sub no evento set com uma ligação de saída para a mesma instância do Redis. O evento set aciona o cache e a ligação de saída retorna um comando delete para a chave que disparou a função.

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;
    }
}

Este exemplo mostra um gatilho pub/sub no evento set com uma ligação de saída para a mesma instância do Redis. O evento set aciona o cache e a ligação de saída retorna um comando delete para a chave que disparou a função.

As ligações são definidas neste ficheiro 'function.json'':

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

Esse código do arquivo pega index.js a chave do gatilho e a retorna para a associação de saída para excluir o item armazenado em cache.

module.exports = async function (context, key) {
    context.log("Deleting recently SET key '" + key + "'");
    return key;
}

Este exemplo mostra um gatilho pub/sub no evento set com uma ligação de saída para a mesma instância do Redis. O evento set aciona o cache e a ligação de saída retorna um comando delete para a chave que disparou a função.

As ligações são definidas neste function.json arquivo:

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

Esse código do arquivo pega run.ps1 a chave do gatilho e a passa para a ligação de saída para excluir o item armazenado em cache.

param($key, $TriggerMetadata)
Write-Host "Deleting recently SET key '$key'"
Push-OutputBinding -Name retVal -Value $key

Este exemplo mostra um gatilho pub/sub no evento set com uma ligação de saída para a mesma instância do Redis. O evento set aciona o cache e a ligação de saída retorna um comando delete para a chave que disparou a função.

As ligações são definidas neste function.json arquivo:

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

Esse código do arquivo pega __init__.py a chave do gatilho e a passa para a ligação de saída para excluir o item armazenado em cache.

import logging

def main(key: str) -> str:
    logging.info("Deleting recently SET key '" + key + "'")
    return key

Atributos

Nota

Todos os comandos são suportados para esta ligação.

A maneira como você define um parâmetro de vinculação de saída depende se suas funções C# são executadas em processo ou em um processo de trabalho isolado.

A ligação de saída é definida desta forma:

Definição Exemplo Description
Em um out parâmetro [Redis(<Connection>, <Command>)] out string <Return_Variable> A variável string retornada pelo método é um valor de chave que a associação usa para executar o comando no cache específico.

Nesse caso, o tipo retornado pelo método é um valor de chave que a associação usa para executar o comando no cache específico.

Quando sua função tem várias ligações de saída, você pode, em vez disso, aplicar o atributo binding à propriedade de um tipo que é um valor de chave, que a associação usa para executar o comando no cache específico. Para obter mais informações, consulte Várias ligações de saída.


Independentemente do modo de processo C#, as mesmas propriedades são suportadas pelo atributo de vinculação de saída:

Propriedade Attribute Description
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, como: DEL.

Anotações

A RedisOutput anotação suporta estas propriedades:

Property Description
name O nome da ligaçã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, como: DEL.

Configuração

A tabela a seguir explica as propriedades de configuração de associação definidas no arquivo function.json .

Property Description
name O nome da ligaçã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, como: DEL.

Consulte a seção Exemplo para obter exemplos completos.

Utilização

A saída retorna uma cadeia de caracteres, que é a chave da entrada de cache na qual se aplica o comando específico.

Há três tipos de conexões que são permitidas de uma instância do Azure Functions para um Cache Redis em suas implantações. Para o desenvolvimento local, você também pode usar segredos principais de serviço. Use o appsettings para configurar cada um dos seguintes tipos de autenticação de cliente, supondo que o Connection foi definido como Redis na função.