Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Выходные привязки Кэш Azure для Redis позволяют изменять ключи в кэше на основе набора доступных триггеров в кэше.
Сведения об установке и настройке см. в обзорной статье.
Область доступности привязок функций
| Тип привязки | Управляемый Redis в Azure | Кэш Azure для Redis |
|---|---|---|
| Выходные данные | Да | Да |
Внимание
При использовании Управляемого Redis azure или уровнях enterprise Кэш Azure для Redis используйте порт 10000, а не порт 6380 или 6379.
Внимание
Модель 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 он задан в функции.
Внимание
Чтобы обеспечить оптимальную безопасность, приложение-функция должна использовать идентификатор Microsoft Entra с управляемыми удостоверениями для авторизации запросов к кэшу, если это возможно. Авторизация с помощью идентификатора Microsoft Entra и управляемых удостоверений обеспечивает более высокую безопасность и удобство использования при авторизации ключа общего доступа. Дополнительные сведения об использовании управляемых удостоверений с кэшем см. в разделе "Использование идентификатора Microsoft Entra для проверки подлинности кэша".