Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Funkce Redis publikují nebo odebírají funkce , které umožňují odesílání zpráv do Redis a vysílání odběratelům.
Další informace o triggerech a vazbách Azure Cache for Redis najdete v rozšíření Redis pro Azure Functions.
Rozsah dostupnosti pro triggery funkcí
| Typ triggeru | Azure Spravovaný Redis | Azure Cache for Redis |
|---|---|---|
| Aktivační událost pub/sub | Ano | Ano |
Důležité
Pokud používáte Azure Managed Redis nebo podnikové úrovně Azure Cache for Redis, použijte místo portu 6380 nebo 6379 port 10000.
Upozorňující
Tento trigger není podporován v plánu Consumption nebo plánu Flex Consumption , protože Redis PubSub vyžaduje, aby klienti vždy aktivně naslouchat příjmu všech zpráv. U plánů consumption může vaše funkce vynechat určité zprávy publikované v kanálu.
Důležité
Rozšíření Azure Cache for Redis zatím nepodporuje model Pythonu v2 pro Functions. Další podrobnosti o tom, jak model v2 funguje, najdete v příručce pro vývojáře v Pythonu pro Azure Functions.
Příklady
| Model spouštění | Popis |
|---|---|
| Izolovaný model pracovního procesu | Kód funkce se spouští v samostatném pracovním procesu .NET. Používá se s podporovanými verzemi rozhraní .NET a .NET Framework. Další informace najdete v Příručce pro spouštění funkcí Azure Functions jazyka C# v izolovaném pracovním modelu. |
| Model v procesu | Kód funkce se spouští ve stejném procesu jako hostitelský proces služby Functions. Podporuje pouze verze dlouhodobé podpory (LTS) rozhraní .NET. Další informace najdete v tématu Vývoj funkcí knihovny tříd jazyka C# pomocí Azure Functions. |
Důležité
Pro funkce .NET se doporučuje použití izolovaného modelu pracovního procesu přes model v procesu. Porovnání modelů pracovních procesů v procesu a izolovaných pracovních procesů najdete v rozdílech mezi izolovaným modelem pracovního procesu a modelem v procesu pro .NET ve službě Azure Functions.
Tato ukázka naslouchá kanálu pubsubTest.
using Microsoft.Extensions.Logging;
namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisPubSubTrigger
{
internal class SimplePubSubTrigger
{
private readonly ILogger<SimplePubSubTrigger> logger;
public SimplePubSubTrigger(ILogger<SimplePubSubTrigger> logger)
{
this.logger = logger;
}
[Function(nameof(SimplePubSubTrigger))]
public void Run(
[RedisPubSubTrigger(Common.connectionStringSetting, "pubsubTest")] string message)
{
logger.LogInformation(message);
}
}
}
Tato ukázka naslouchá všem oznámením o prostoru klíčů pro klíč keyspaceTest.
using Microsoft.Extensions.Logging;
namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisPubSubTrigger
{
internal class KeyspaceTrigger
{
private readonly ILogger<KeyspaceTrigger> logger;
public KeyspaceTrigger(ILogger<KeyspaceTrigger> logger)
{
this.logger = logger;
}
[Function(nameof(KeyspaceTrigger))]
public void Run(
[RedisPubSubTrigger(Common.connectionStringSetting, "__keyspace@0__:keyspaceTest")] string message)
{
logger.LogInformation(message);
}
}
}
Tato ukázka naslouchá všem keyevent oznámením pro příkaz DELdelete .
using Microsoft.Extensions.Logging;
namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisPubSubTrigger
{
internal class KeyeventTrigger
{
private readonly ILogger<KeyeventTrigger> logger;
public KeyeventTrigger(ILogger<KeyeventTrigger> logger)
{
this.logger = logger;
}
[Function(nameof(KeyeventTrigger))]
public void Run(
[RedisPubSubTrigger(Common.connectionStringSetting, "__keyevent@0__:del")] string message)
{
logger.LogInformation($"Key '{message}' deleted.");
}
}
}
Tato ukázka naslouchá kanálu pubsubTest.
package com.function.RedisPubSubTrigger;
import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.redis.annotation.*;
public class SimplePubSubTrigger {
@FunctionName("SimplePubSubTrigger")
public void run(
@RedisPubSubTrigger(
name = "req",
connection = "redisConnectionString",
channel = "pubsubTest",
pattern = false)
String message,
final ExecutionContext context) {
context.getLogger().info(message);
}
}
Tato ukázka naslouchá všem oznámením o prostoru klíčů pro klíč myKey.
package com.function.RedisPubSubTrigger;
import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.redis.annotation.*;
public class KeyspaceTrigger {
@FunctionName("KeyspaceTrigger")
public void run(
@RedisPubSubTrigger(
name = "req",
connection = "redisConnectionString",
channel = "__keyspace@0__:keyspaceTest",
pattern = false)
String message,
final ExecutionContext context) {
context.getLogger().info(message);
}
}
Tato ukázka naslouchá všem keyevent oznámením pro příkaz DELdelete .
package com.function.RedisPubSubTrigger;
import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.redis.annotation.*;
public class KeyeventTrigger {
@FunctionName("KeyeventTrigger")
public void run(
@RedisPubSubTrigger(
name = "req",
connection = "redisConnectionString",
channel = "__keyevent@0__:del",
pattern = false)
String message,
final ExecutionContext context) {
context.getLogger().info(message);
}
}
Tato ukázka používá stejný index.js soubor s daty vazby function.json v souboru určujícím, ve kterém kanálu se aktivační událost vyskytuje.
Tady je index.js soubor:
module.exports = async function (context, message) {
context.log(message);
}
Od function.json:
Tady je vazba dat pro naslouchání kanálu pubsubTest.
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "pubsubTest",
"pattern": false,
"name": "message",
"direction": "in"
}
],
"scriptFile": "index.js"
}
Tady je vazba dat pro naslouchání oznámení o prostoru klíčů pro klíč keyspaceTest.
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "__keyspace@0__:keyspaceTest",
"pattern": false,
"name": "message",
"direction": "in"
}
],
"scriptFile": "index.js"
}
Tady jsou data vazby pro naslouchání keyevent oznámení pro příkaz DELdelete .
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "__keyevent@0__:del",
"pattern": false,
"name": "message",
"direction": "in"
}
],
"scriptFile": "index.js"
}
Tato ukázka používá stejný run.ps1 soubor s daty vazby function.json v souboru určujícím, ve kterém kanálu se aktivační událost vyskytuje.
Tady je run.ps1 soubor:
param($message, $TriggerMetadata)
Write-Host $message
Od function.json:
Tady je vazba dat pro naslouchání kanálu pubsubTest.
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "pubsubTest",
"pattern": false,
"name": "message",
"direction": "in"
}
],
"scriptFile": "run.ps1"
}
Tady je vazba dat pro naslouchání oznámení o prostoru klíčů pro klíč keyspaceTest.
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "__keyspace@0__:keyspaceTest",
"pattern": false,
"name": "message",
"direction": "in"
}
],
"scriptFile": "run.ps1"
}
Tady jsou data vazby pro naslouchání keyevent oznámení pro příkaz DELdelete .
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "__keyevent@0__:del",
"pattern": false,
"name": "message",
"direction": "in"
}
],
"scriptFile": "run.ps1"
}
Programovací model Pythonu v1 vyžaduje, abyste definovali vazby v samostatném souboru function.json ve složce funkce. Další informace najdete v příručce pro vývojáře Pythonu.
Tato ukázka používá stejný __init__.py soubor s daty vazby function.json v souboru určujícím, ve kterém kanálu se aktivační událost vyskytuje.
Tady je __init__.py soubor:
import logging
def main(message: str):
logging.info(message)
Od function.json:
Tady je vazba dat pro naslouchání kanálu pubsubTest.
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "pubsubTest",
"pattern": false,
"name": "message",
"direction": "in"
}
],
"scriptFile": "__init__.py"
}
Tady je vazba dat pro naslouchání oznámení o prostoru klíčů pro klíč keyspaceTest.
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "__keyspace@0__:keyspaceTest",
"pattern": false,
"name": "message",
"direction": "in"
}
],
"scriptFile": "__init__.py"
}
Tady jsou data vazby pro naslouchání keyevent oznámení pro příkaz DELdelete .
{
"bindings": [
{
"type": "redisPubSubTrigger",
"connection": "redisConnectionString",
"channel": "__keyevent@0__:del",
"pattern": false,
"name": "message",
"direction": "in"
}
],
"scriptFile": "__init__.py"
}
Atributy
| Parametr | Popis | Požaduje se | Výchozí |
|---|---|---|---|
Connection |
Název nastavení aplikace, které obsahuje připojovací řetězec mezipaměti, například:<cacheName>.redis.cache.windows.net:6380,password... |
Ano | |
Channel |
Dílčí kanál pub, na který má trigger naslouchat. Podporuje vzory kanálů ve stylu globu. Toto pole lze vyřešit pomocí INameResolver. |
Ano |
Poznámky
| Parametr | Popis | Požaduje se | Výchozí |
|---|---|---|---|
name |
Název proměnné, která má hodnotu vrácenou funkcí. | Ano | |
connection |
Název nastavení aplikace, které obsahuje připojovací řetězec mezipaměti, například:<cacheName>.redis.cache.windows.net:6380,password... |
Ano | |
channel |
Dílčí kanál pub, na který má trigger naslouchat. Podporuje vzory kanálů ve stylu globu. | Ano |
Konfigurace
| vlastnost function.json | Popis | Požaduje se | Výchozí |
|---|---|---|---|
type |
Typ aktivační události. Pro aktivační událost pub sub je redisPubSubTriggertyp . |
Ano | |
connection |
Název nastavení aplikace, které obsahuje připojovací řetězec mezipaměti, například:<cacheName>.redis.cache.windows.net:6380,password... |
Ano | |
channel |
Název dílčího kanálu pub, ke kterému se přihlašuje odběr. | Ano | |
pattern |
Logická hodnota označující daný kanál používá porovnávání vzorů. Pokud pattern je pravda, pak se kanál považuje za vzor ve stylu globu namísto literálu. |
Ano | |
name |
Název proměnné, která má hodnotu vrácenou funkcí. | Ano | |
direction |
Musí být nastavena na inhodnotu . |
Ano |
Důležité
Parametr connection neukládá mezipaměť Redis připojovací řetězec sama. Místo toho odkazuje na název proměnné prostředí, která obsahuje připojovací řetězec. Díky tomu je aplikace bezpečnější. Další informace najdete v tématu Redis připojovací řetězec.
Využití
Funkce Redis publikují nebo odebírají funkce , které umožňují odesílání zpráv do Redis a vysílání odběratelům. Služba RedisPubSubTrigger Azure Functions se aktivuje u pub/sub activity. Přihlásí RedisPubSubTriggerse k odběru konkrétního vzoru kanálu pomocí PSUBSCRIBEfunkce a zobrazí zprávy přijaté na těchto kanálech.
Předpoklady a omezení
- Není
RedisPubSubTriggerschopen naslouchat oznámením o prostoru klíčů v clusterovaných mezipamětí. - Funkce úrovně Basic nepodporují aktivaci
keyspacenebokeyeventoznámení prostřednictvím funkceRedisPubSubTrigger. - Nepodporuje
RedisPubSubTriggerse v plánu Consumption ani v plánu Flex Consumption , protože Redis PubSub vyžaduje, aby klienti vždy aktivně naslouchali příjmu všech zpráv. U plánů consumption může vaše funkce vynechat určité zprávy publikované v kanálu. - Funkce s horizontálním navýšením
RedisPubSubTriggerkapacity by se neměly škálovat na více instancí. Každá instance naslouchá a zpracovává každou podřízenou zprávu pub, což vede k duplicitnímu zpracování.
Upozorňující
Tento trigger není podporován v plánu Consumption ani v plánu Flex Consumption , protože Redis PubSub vyžaduje, aby klienti vždy aktivně naslouchali příjmu všech zpráv. U plánů consumption může vaše funkce vynechat určité zprávy publikované v kanálu.
Aktivace v oznámeních o prostoru klíčů
Redis nabízí integrovaný koncept označovaný jako oznámení keyspace. Pokud je tato funkce povolená, publikuje oznámení široké škály akcí mezipaměti do vyhrazeného pub/dílčího kanálu. Mezi podporované akce patří akce, které ovlivňují konkrétní klíče, označované jako oznámení o prostoru klíčů, a konkrétní příkazy označované jako oznámení keyevent. Podporuje se obrovská řada akcí Redis, například SET, DELa EXPIRE. Úplný seznam najdete v dokumentaci k oznámení o prostoru klíčů.
Oznámení keyspace a keyevent oznámení se publikují s následující syntaxí:
PUBLISH __keyspace@0__:<affectedKey> <command>
PUBLISH __keyevent@0__:<affectedCommand> <key>
Vzhledem k tomu, že jsou tyto události publikovány v kanálech pub/sub, RedisPubSubTrigger je možné je vyzvednout. Další příklady najdete v části RedisPubSubTrigger .
Důležité
Před publikováním oznámení ve službě Azure Cache for Redis keyspace je nutné povolit události. Další informace naleznete v části Upřesnit nastavení.
| Typ | Popis |
|---|---|
string |
Zpráva kanálu serializovaná jako JSON (UTF-8 kódovaná pro typy bajtů) ve formátu, který následuje. |
Custom |
Trigger používá Json.NET serializace k mapování zprávy z kanálu na daný vlastní typ. |
Formát řetězce JSON
{
"SubscriptionChannel":"__keyspace@0__:*",
"Channel":"__keyspace@0__:mykey",
"Message":"set"
}
| Typ | Popis |
|---|---|
string |
Zpráva kanálu serializovaná jako JSON (UTF-8 kódovaná pro typy bajtů) ve formátu, který následuje. |
Custom |
Trigger používá Json.NET serializace k mapování zprávy z kanálu z kanálu string do vlastního typu. |
{
"SubscriptionChannel":"__keyspace@0__:*",
"Channel":"__keyspace@0__:mykey",
"Message":"set"
}