Кэш Azure для Redis входная привязка для Функции Azure

При запуске функции Кэш Azure для Redis входная привязка извлекает данные из кэша и передает ее функции в качестве входного параметра.

Сведения об установке и настройке см. в обзорной статье.

Внимание

Модель Node.js версии 4 для функций пока не поддерживается расширением Кэш Azure для Redis. Дополнительные сведения о том, как работает модель версии 4, см. в руководстве разработчика по Функции Azure Node.js. Дополнительные сведения о различиях между версиями 3 и 4 см. в руководстве по миграции.

Внимание

Модель Python версии 2 для функций пока не поддерживается расширением Кэш Azure для Redis. Дополнительные сведения о том, как работает модель версии 2, см. в руководстве разработчика Функции Azure Python.

Пример

Функцию C# можно создать с помощью одного из следующих режимов C#:

  • Изолированная рабочая модель: скомпилированная функция C#, которая выполняется в рабочем процессе, изолированном от среды выполнения. Изолированный рабочий процесс необходим для поддержки функций C#, работающих в LTS и не LTS-версиях .NET и платформа .NET Framework. Расширения для изолированных рабочих процессов используют Microsoft.Azure.Functions.Worker.Extensions.* пространства имен.
  • Модель внутрипроцессного процесса: скомпилированная функция C#, которая выполняется в том же процессе, что и среда выполнения Функций. В варианте этой модели функции можно запускать с помощью скриптов C#, которая поддерживается главным образом для редактирования портала C#. Расширения для функций в процессе используют Microsoft.Azure.WebJobs.Extensions.* пространства имен.

Внимание

Для функций .NET рекомендуется использовать изолированную рабочую модель для модели в процессе . Сравнение внутрипроцессных и изолированных рабочих моделей см. в различиях между изолированной рабочей моделью и внутрипроцессной моделью для .NET на Функции Azure.

Следующий код использует ключ из триггера pub/sub для получения и записи значения из входной привязки с помощью GET команды:

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

Дополнительные примеры для Кэш Azure для Redis входной привязки доступны в репозитории GitHub.

Следующий код использует ключ из триггера pub/sub для получения и записи значения из входной привязки с помощью GET команды:

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

Этот function.json определяет триггер pub/sub и входную привязку к сообщению GET в экземпляре Кэш Azure для 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"
}

Этот код JavaScript (из index.js) извлекает и регистрирует кэшированное значение, связанное с ключом, предоставленным триггером pub/sub.


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

Этот function.json определяет триггер pub/sub и входную привязку к сообщению GET в экземпляре Кэш Azure для 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"
}

Этот код PowerShell (из run.ps1) извлекает и регистрирует кэшированное значение, связанное с ключом, предоставленным триггером pub/sub.

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

В следующем примере используется триггер pub/sub с входной привязкой к сообщению GET в экземпляре Кэш Azure для Redis. Пример зависит от того, используется ли модель программирования Python версии 1 или версии 2.

Этот function.json определяет триггер pub/sub и входную привязку к сообщению GET в экземпляре Кэш Azure для 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"
        }
    ]
}

Этот код Python (из __init__.py) извлекает и регистрирует кэшированное значение, связанное с ключом, предоставленным триггером pub/sub:


import logging

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

В разделе Конфигурация описываются эти свойства.

Атрибуты

Примечание.

Для этой привязки поддерживаются не все команды. На данный момент поддерживаются только команды чтения, возвращающие один выход. Полный список можно найти здесь

Свойство атрибута Description
Connection Имя параметра приложения, содержащего строка подключения кэша, например:<cacheName>.redis.cache.windows.net:6380,password...
Command Команда redis-cli, выполняемая в кэше, со всеми аргументами, разделенными пробелами, такими как : GET key, HGET key field.

Заметки

Заметка RedisInput поддерживает следующие свойства:

Свойство Description
name Имя конкретной входной привязки.
connection Имя параметра приложения, содержащего строка подключения кэша, например:<cacheName>.redis.cache.windows.net:6380,password...
command Команда redis-cli, выполняемая в кэше, со всеми аргументами, разделенными пробелами, например: GET key или HGET key field.

Настройка

В следующей таблице описываются свойства конфигурации привязки, которые задаются в файле function.json.

Свойство в function.json Description
connection Имя параметра приложения, содержащего строка подключения кэша, например:<cacheName>.redis.cache.windows.net:6380,password...
command Команда redis-cli, выполняемая в кэше, со всеми аргументами, разделенными пробелами, такими как : GET key, HGET key field.

Примечание.

Python версии 2 и Node.js версии 4 для функций не используют function.json для определения функции. Обе эти новые языковые версии в настоящее время не поддерживаются привязками кэша Redis Для Azure.

Подробные примеры см. в разделе Примеры.

Использование

Входная привязка ожидает получения строки из кэша.

При использовании настраиваемого типа в качестве параметра привязки расширение пытается десериализировать строку в формате JSON в настраиваемый тип этого параметра.