Enlace de entrada de Azure Cache for Redis para Azure Functions (versión preliminar)

Cuando se ejecuta una función, el enlace de entrada de Azure Cache for Redis recupera datos de una caché y los pasa a la función como parámetro de entrada.

Para obtener información sobre los detalles de instalación y configuración, consulte Introducción.

Importante

El modelo de Node.js v4 para Functions aún no es compatible con la extensión azure Cache for Redis. Para más detalles acerca de cómo funciona el modelo v4, consulte la Guía para desarrolladores de Node.js de Azure Functions. Para obtener más información acerca de las diferencias entre v3 y v4, consulte la Guía de migración.

Importante

El modelo de Python v2 para Functions aún no es compatible con la extensión Azure Cache for Redis. Para más información sobre cómo funciona el modelo v2, consulte la Guía para desarrolladores de Python de Azure Functions.

Ejemplo

Se puede crear una función C# mediante uno de los siguientes modos de C#:

  • Modelo de trabajo aislado: función compilada en C# que se ejecuta en un proceso trabajador aislado del tiempo de ejecución. Se requiere un proceso de trabajo aislado para admitir funciones de C# ejecutándose en versiones de .NET que son y no son LTS y .NET Framework. Las extensiones para las funciones de proceso de trabajo aisladas usan espacios de nombres Microsoft.Azure.Functions.Worker.Extensions.*.
  • Modelo en curso: función C# compilada que se ejecuta en el mismo proceso que el tiempo de ejecución de Functions. En una variación de este modelo, Functions se puede ejecutar mediante el scripting de C#, que se admite principalmente para la edición del portal de C#. Las extensiones para funciones en proceso utilizan espacios de nombres Microsoft.Azure.WebJobs.Extensions.*.

Importante

En el caso de las funciones de .NET, se recomienda usar el modelo de trabajo aislado en el modelo en proceso . Para obtener una comparación de los modelos de trabajo en proceso y aislados, consulte las diferencias entre el modelo de trabajo aislado y el modelo en proceso para .NET en Azure Functions.

El código siguiente usa la clave del desencadenador pub/sub para obtener y registrar el valor de un enlace de entrada mediante un 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}'");
        }
    }
}

Hay disponibles más ejemplos para el enlace de entrada de Azure Cache for Redis en el repositorio de GitHub.

El código siguiente usa la clave del desencadenador pub/sub para obtener y registrar el valor de un enlace de entrada mediante un 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 un desencadenador pub/sub y un enlace de entrada al mensaje GET en una instancia de Azure Cache for 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"
}

Este código JavaScript (de index.js) vuelve a intentar y registra el valor almacenado en caché relacionado con la clave proporcionada por el desencadenador pub/sub.


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

Este function.json define un desencadenador pub/sub y un enlace de entrada al mensaje GET en una instancia de Azure Cache for 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"
}

Este código de PowerShell (de run.ps1) recupera y registra el valor almacenado en caché relacionado con la clave proporcionada por el desencadenador pub/sub.

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

En el ejemplo siguiente se usa un desencadenador pub/sub con un enlace de entrada al mensaje GET en una instancia de Azure Cache for Redis. El ejemplo depende de si usa el modelo de programación de Python v1 o v2.

Este function.json define un desencadenador pub/sub y un enlace de entrada al mensaje GET en una instancia de Azure Cache for 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 de Python (de __init__.py) vuelve a intentar y registra el valor almacenado en caché relacionado con la clave proporcionada por el desencadenador pub/sub:


import logging

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

En la sección de configuración se explican estas propiedades.

Atributos

Nota:

No todos los comandos son compatibles con este enlace. En este momento, solo se admiten los comandos de lectura que devuelven una única salida. Puede encontrar la lista completa aquí.

Propiedad de atributo Descripción
Connection Nombre de la configuración de la aplicación que contiene el cadena de conexión de caché, como:<cacheName>.redis.cache.windows.net:6380,password...
Command Comando redis-cli que se va a ejecutar en la memoria caché con todos los argumentos separados por espacios, como: GET key, HGET key field.

anotaciones

La RedisInput anotación admite estas propiedades:

Propiedad Descripción
name Nombre del enlace de entrada específico.
connection Nombre de la configuración de la aplicación que contiene el cadena de conexión de caché, como:<cacheName>.redis.cache.windows.net:6380,password...
command Comando redis-cli que se va a ejecutar en la memoria caché con todos los argumentos separados por espacios, como: GET key o HGET key field.

Configuración

En la siguiente tabla se explican las propiedades de configuración de enlace que se establecen en el archivo function.json.

Propiedad de function.json Descripción
connection Nombre de la configuración de la aplicación que contiene el cadena de conexión de caché, como:<cacheName>.redis.cache.windows.net:6380,password...
command Comando redis-cli que se va a ejecutar en la memoria caché con todos los argumentos separados por espacios, como: GET key, HGET key field.

Nota:

Python v2 y Node.js v4 para Functions no usan function.json para definir la función. Actualmente, los enlaces de Azure Redis Cache no admiten estas nuevas versiones de lenguaje.

Consulte la sección de ejemplos para ver ejemplos completos.

Uso

El enlace de entrada espera recibir una cadena de la memoria caché.

Cuando se usa un tipo personalizado como parámetro de enlace, la extensión intenta deserializar una cadena con formato JSON en el tipo personalizado de este parámetro.