Кэш 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.* пространства имен.

В следующем примере показан триггер pub/sub для события набора с выходной привязкой к тому же экземпляру Redis. Событие набора активирует кэш и выходную привязку возвращает команду удаления для ключа, активировающего функцию.

Внимание

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


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

В следующем примере показан триггер pub/sub для события набора с выходной привязкой к тому же экземпляру Redis. Событие набора активирует кэш и выходную привязку возвращает команду удаления для ключа, активировающего функцию.

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

В этом примере показан триггер pub/sub для события набора с выходной привязкой к тому же экземпляру Redis. Событие набора активирует кэш и выходную привязку возвращает команду удаления для ключа, активировающего функцию.

Привязки определяются в этом файле "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"
}

Этот код из index.js файла принимает ключ из триггера и возвращает его в выходную привязку для удаления кэшированного элемента.

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

В этом примере показан триггер pub/sub для события набора с выходной привязкой к тому же экземпляру Redis. Событие набора активирует кэш и выходную привязку возвращает команду удаления для ключа, активировающего функцию.

Привязки определяются в этом function.json файле:

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

Этот код из run.ps1 файла принимает ключ из триггера и передает его в выходную привязку для удаления кэшированного элемента.

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

В этом примере показан триггер pub/sub для события набора с выходной привязкой к тому же экземпляру Redis. Событие набора активирует кэш и выходную привязку возвращает команду удаления для ключа, активировающего функцию.

Привязки определяются в этом function.json файле:

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

Этот код из __init__.py файла принимает ключ из триггера и передает его в выходную привязку для удаления кэшированного элемента.

import logging

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

Атрибуты

Примечание.

Для этой привязки поддерживаются все команды.

Способ определения параметра выходной привязки зависит от того, выполняются ли функции C# в процессе или в изолированном рабочем процессе.

Выходная привязка определяется таким образом:

Определение Пример Description
В параметре out [Redis(<Connection>, <Command>)] out string <Return_Variable> Строковая переменная, возвращаемая методом, — это ключевое значение, которое привязка использует для выполнения команды в определенном кэше.

В этом случае тип, возвращаемый методом, является ключевым значением, которое привязка использует для выполнения команды в определенном кэше.

Если функция имеет несколько выходных привязок, вместо этого можно применить атрибут привязки к свойству типа, являющегося значением ключа, которое привязка использует для выполнения команды в определенном кэше. Дополнительные сведения см. в разделе "Несколько выходных привязок".


Независимо от режима процесса C# те же свойства поддерживаются атрибутом выходной привязки:

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

Заметки

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

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

Настройка

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

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

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

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

Выходные данные возвращают строку, которая является ключом записи кэша, в которой применяется определенная команда.

Существует три типа подключений, разрешенных из экземпляра Функции Azure в кэш Redis в развертываниях. Для локальной разработки можно также использовать секреты субъекта-службы. appsettings Используйте для настройки каждого из следующих типов проверки подлинности клиента, предполагаяConnection, что Redis он задан в функции.