Vinculação de entrada do Cache do Azure para Redis para o 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 detalhes de instalação e configuração, consulte a visão geral.
Âmbito de disponibilidade para ligações de funções
Tipo de Enlace | Azure Managed Redis | 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 é 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.
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.
O código a seguir usa a chave do gatilho pub/sub para obter e registrar o valor de uma ligaçã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 vinculação de entrada do Cache do Azure para Redis estão disponíveis no repositório do GitHub.
O código a seguir usa a chave do gatilho pub/sub para obter e registrar o valor de uma ligaçã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 + "'");
}
}
Esta 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 (de 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 + "'");
}
Esta 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 à mensagem GET em uma instância do Cache do Azure para Redis. O exemplo depende se você usa o modelo de programação Python v1 ou v2.
Esta 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 (de __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 de configuração explica essas propriedades.
Atributos
Nota
Nem todos os comandos são suportados para esta ligação. No momento, apenas comandos de leitura que retornam uma única saída são suportados. A lista completa pode ser consultada aqui
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 com todos os argumentos separados por espaços, como: GET key , HGET key field . |
Anotações
A RedisInput
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 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 vinculação definidas no arquivo function.json.
function.json propriedade | 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 com todos os argumentos separados por espaços, como: GET key , HGET key field . |
Nota
Python v2 e Node.js v4 for Functions não usam function.json para definir a função. Ambas as novas versões de idioma não são atualmente suportadas pelas associações do Cache Redis do Azure.
Consulte a seção Exemplo para obter exemplos completos.
Utilização
A associação de entrada espera receber uma cadeia de caracteres do cache.
Quando você usa um tipo personalizado como o parâmetro de ligação, a extensão tenta desserializar uma cadeia de caracteres formatada em JSON para o tipo personalizado desse parâmetro.