Кэш Azure для Redis выходная привязка для Функции Azure
Выходные привязки Кэш Azure для Redis позволяют изменять ключи в кэше на основе набора доступных триггеров в кэше.
Сведения об установке и настройке см. в обзорной статье.
Внимание
Модель Node.js версии 4 для функций пока не поддерживается расширением Кэш Azure для Redis. Дополнительные сведения о том, как работает модель версии 4, см. в руководстве разработчика по Функции Azure Node.js. Дополнительные сведения о различиях между версиями 3 и 4 см. в руководстве по миграции.
Пример
Функцию 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
он задан в функции.