共用方式為


適用於 Azure Functions 的 RedisListTrigger

RedisListTrigger 從清單彈出新的元素,並將這些項目呈現至 函式。

如需 Azure Cache for Redis 觸發程式和系結的詳細資訊, 請參閱適用於 Azure Functions 的 Redis 擴充功能。

函式觸發程序的可用性範圍

觸發程式類型 Azure 受控 Redis Azure Cache for Redis
清單 Yes

重要

使用 Azure 受控 Redis 或 Azure Cache for Redis 的企業層時,請使用埠 10000,而不是埠 6380 或 6379。

重要

Redis 觸發程式目前不支援在取用方案中執行的函式。

重要

Azure Cache for Redis 擴充功能尚不支援適用於 Functions 的 Node.js v4 模型。 如需 v4 模型運作方式的更多詳細資料,請參閱 Azure Functions Node.js 開發人員指南。 若要深入了解 v3 與 v4 之間的差異,請參閱移轉指南

重要

Azure Cache for Redis 擴充功能尚不支援適用於 Functions 的 Python v2 模型。 如需 v2 模型運作方式的更多詳細資料,請參閱 Azure Functions Python 開發人員指南

範例

重要

針對 .NET 函式,建議針對內含式模型使用隔離式背景工作角色模型。 如需同進程隔離背景工作模型的比較,請參閱隔離的背景工作模型與 Azure Functions 上 .NET 的同進程模型之間的差異

下列範例會輪詢密鑰 listTest.:

using Microsoft.Extensions.Logging;

namespace Microsoft.Azure.Functions.Worker.Extensions.Redis.Samples.RedisListTrigger
{
    public class SimpleListTrigger
    {
        private readonly ILogger<SimpleListTrigger> logger;

        public SimpleListTrigger(ILogger<SimpleListTrigger> logger)
        {
            this.logger = logger;
        }

        [Function(nameof(SimpleListTrigger))]
        public void Run(
            [RedisListTrigger(Common.connectionStringSetting, "listTest")] string entry)
        {
            logger.LogInformation(entry);
        }
    }
}

下列範例會在位於 redisLocalhost 的 localhost Redis 執行個體上輪詢索引鍵 listTest

package com.function.RedisListTrigger;

import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.redis.annotation.*;

public class SimpleListTrigger {
    @FunctionName("SimpleListTrigger")
    public void run(
            @RedisListTrigger(
                name = "req",
                connection = "redisConnectionString",
                key = "listTest",
                pollingIntervalInMs = 1000,
                maxBatchSize = 1)
                String message,
            final ExecutionContext context) {
            context.getLogger().info(message);
    }
}

此範例會 index.js 使用相同的檔案,並在檔案中 function.json 系結數據。

以下是檔案 index.js

module.exports = async function (context, entry) {
    context.log(entry);
}

function.json,以下是系結數據:

{
    "bindings": [
        {
            "type": "redisListTrigger",
            "listPopFromBeginning": true,
            "connection": "redisConnectionString",
            "key": "listTest",
            "pollingIntervalInMs": 1000,
            "maxBatchSize": 16,
            "name": "entry",
            "direction": "in"
        }
      ],
    "scriptFile": "index.js"
}

此範例會 run.ps1 使用相同的檔案,並在檔案中 function.json 系結數據。

以下是檔案 run.ps1

param($entry, $TriggerMetadata)
Write-Host $entry

function.json,以下是系結數據:

{
    "bindings": [
        {
            "type": "redisListTrigger",
            "listPopFromBeginning": true,
            "connection": "redisConnectionString",
            "key": "listTest",
            "pollingIntervalInMs": 1000,
            "maxBatchSize": 16,
            "name": "entry",
            "direction": "in"
        }
      ],
    "scriptFile": "run.ps1"
}

此範例會 __init__.py 使用相同的檔案,並在檔案中 function.json 系結數據。

Python v1 程式設計模型需要您在函式資料夾中的個別 function.json 檔案中定義系結。 如需詳細資訊,請參閱 Python 開發人員指南

以下是檔案 __init__.py

import logging

def main(entry: str):
    logging.info(entry)

function.json,以下是系結數據:

{
    "bindings": [
        {
            "type": "redisListTrigger",
            "listPopFromBeginning": true,
            "connection": "redisConnectionString",
            "key": "listTest",
            "pollingIntervalInMs": 1000,
            "maxBatchSize": 16,
            "name": "entry",
            "direction": "in"
        }
      ],
    "scriptFile": "__init__.py"
}

屬性

參數 描述: 是必要欄位 預設
Connection 包含快取 連接字串 的應用程式設定名稱,例如:<cacheName>.redis.cache.windows.net:6380,password... Yes
Key 要讀取的索引鍵。 您可使用 INameResolver 來解析此欄位。 Yes
PollingIntervalInMs 以毫秒為單位輪詢 Redis 的頻率。 選擇性 1000
MessagesPerWorker 每個函式實例應該處理的訊息數。 用來判斷函式應調整的實例數目。 選擇性 100
Count 一次從 Redis 快顯的項目數。 專案會平行處理。 只有在 與中使用 自變數LPOPRPOP才支援 Redis 6.2+ COUNT 選擇性 10
ListPopFromBeginning 判斷是否從開頭使用 LPOP來快顯項目,還是使用 RPOP從結尾快顯專案。 選擇性 true

註釋

參數 描述: 是必要欄位 預設
name “entry”
connection 包含快取 連接字串 的應用程式設定名稱,例如:<cacheName>.redis.cache.windows.net:6380,password... Yes
key 您可以使用 INameResolver 解析此欄位。 Yes
pollingIntervalInMs 以毫秒為單位輪詢 Redis 的頻率。 選擇性 1000
messagesPerWorker 每個函式實例應該處理的訊息數。 用來判斷函式應調整的實例數目。 選擇性 100
count 一次從 Redis 讀取的項目數。 這些元素會以平行方式處理。 選擇性 10
listPopFromBeginning 是否要在函式執行之後刪除數據流專案。 Yes true

組態

下表說明您在 function.json 檔案中設定的繫結設定屬性。

function.json 屬性 描述 選擇性 預設
type 觸發程式的名稱。 No
listPopFromBeginning 是否要在函式執行之後刪除數據流專案。 設定為 true Yes true
connection 包含快取 連接字串 的應用程式設定名稱,例如:<cacheName>.redis.cache.windows.net:6380,password... No
key 您可使用 INameResolver 來解析此欄位。 No
pollingIntervalInMs 以毫秒為單位輪詢 Redis 的頻率。 Yes 1000
messagesPerWorker 每個函式實例應該處理的訊息數。 用來判斷函式應調整的實例數目。 Yes 100
count 一次從快取讀取的項目數。 專案會平行處理。 Yes 10
name ? Yes
direction 設定為 in No

如需完整範例,請參閱範例一節。

使用方式

RedisListTrigger 從清單彈出新的元素,並將這些項目呈現至 函式。 觸發程式會以可設定的固定間隔輪詢 Redis,並使用 LPOPRPOP 從清單快顯專案。

類型 描述
byte[] 來自通道的訊息。
string 來自通道的訊息。
Custom 觸發程式會使用 Json.NET 串行化,將 來自通道 string 的訊息對應至自定義類型。