Associação de saída do Cache do Azure para Redis para Azure Functions
As associações de saída do Cache do Azure para Redis permitem que você altere as chaves em um cache com base em um conjunto de gatilhos disponíveis no cache.
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 |
---|---|---|
Saída | 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.*
.
O exemplo a seguir mostra um gatilho pub/sub no evento set com uma associação de saída para a mesma instância do Redis. O evento set dispara o cache e a associação de saída retorna um comando delete para a chave que disparou a função.
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.
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 };
}
}
}
O exemplo a seguir mostra um gatilho pub/sub no evento set com uma associação de saída para a mesma instância do Redis. O evento set dispara o cache e a associaçã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 associação de saída para a mesma instância do Redis. O evento set dispara o cache e a associação de saída retorna um comando delete para a chave que disparou a função.
As ligações são definidas no arquivo '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 associação de saída para a mesma instância do Redis. O evento set dispara o cache e a associação de saída retorna um comando delete para a chave que disparou a função.
As associaçõ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 associaçã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 associação de saída para a mesma instância do Redis. O evento set dispara o cache e a associação de saída retorna um comando delete para a chave que disparou a função.
As associaçõ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 associaçã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
Observação
Todos os comandos têm suporte para essa associação.
A maneira como você define um parâmetro de associação de saída depende se as funções C# são executadas em processo ou em um processo de trabalho isolado.
A associação de saída é definida desta forma:
Definição | Exemplo | Descrição |
---|---|---|
Em um out parâmetro |
[Redis(<Connection>, <Command>)] out string <Return_Variable> |
A variável de cadeia de caracteres 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 associações de saída, você pode aplicar o atributo de associação à 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 associações de saída.
Independentemente do modo de processo C#, as mesmas propriedades têm suporte pelo atributo de associação de saída:
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, como: DEL . |
Anotações
A RedisOutput
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, como: DEL . |
Configuração
A tabela a seguir explica as propriedades de configuração de associação que você define no arquivo function.json.
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, como: DEL . |
Consulte a Seção de exemplo para obter exemplos completos.
Uso
A saída retorna uma string, que é a chave da entrada de cache na qual se aplica o comando específico.
Há três tipos de conexões permitidas de uma instância do Azure Functions para um Cache Redis em suas implantações. Para desenvolvimento local, você também pode usar segredos da entidade 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.