Share via


Azure Functions에 대한 Azure Cache for Redis 입력 바인딩(미리 보기)

함수가 실행되면 Azure Cache for Redis 입력 바인딩은 캐시에서 데이터를 검색하여 입력 매개 변수로 함수에 전달합니다.

설정 및 구성 세부 정보에 대한 자세한 내용은 개요를 참조하세요.

Important

Functions용 Node.js v4 모델은 Azure Cache for Redis 확장에서 아직 지원되지 않습니다. v4 모델의 작동 방식에 대한 자세한 내용은 Azure Functions Node.js 개발자 가이드를 참조하세요. v3과 v4의 차이점에 대해 자세히 알아보려면 마이그레이션 가이드를 참조하세요.

Important

Functions용 Python v2 모델은 Azure Cache for Redis 확장에서 아직 지원되지 않습니다. v2 모델의 작동 방식에 대한 자세한 내용은 Azure Functions Python 개발자 가이드를 참조하세요.

예시

C# 함수는 다음 C# 모드 중 하나를 사용하여 만들 수 있습니다.

  • 격리된 작업자 모델: 런타임에서 격리된 작업자 프로세스에서 실행되는 컴파일된 C# 함수입니다. LTS 및 비 LTS 버전 .NET 및 .NET Framework에서 실행되는 C# 함수를 지원하려면 격리된 작업자 프로세스가 필요합니다. 격리된 작업자 프로세스 함수에 대한 확장은 Microsoft.Azure.Functions.Worker.Extensions.* 네임스페이스를 사용합니다.
  • In Process 모델: Functions 런타임과 동일한 프로세스에서 실행되는 컴파일된 C# 함수입니다. 이 모델의 변형에서는 주로 C# 포털 편집에 지원되는 C# 스크립팅을 사용하여 Functions를 실행할 수 있습니다. In Process 함수에 대한 확장은 Microsoft.Azure.WebJobs.Extensions.* 네임스페이스를 사용합니다.

Important

.NET 함수의 경우 in-process 모델에 대해 격리된 작업자 모델을 사용하는 것이 좋습니다. In-Process 모델과 격리된 작업자 모델을 비교하려면 격리된 작업자 모델과 Azure Functions의 .NET에 대한 In-process 모델 간의 차이점을 참조하세요.

다음 코드는 pub/sub 트리거의 키를 사용하여 명령을 사용하여 GET 입력 바인딩에서 값을 가져오고 기록합니다.

using Microsoft.Extensions.Logging;

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

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

        [Function(nameof(SetGetter))]
        public void Run(
            [RedisPubSubTrigger(Common.connectionStringSetting, "__keyevent@0__:set")] string key,
            [RedisInput(Common.connectionStringSetting, "GET {Message}")] string value)
        {
            logger.LogInformation($"Key '{key}' was set to value '{value}'");
        }
    }
}

Azure Cache for Redis 입력 바인딩에 대한 추가 샘플은 GitHub 리포지토리에서 사용할 수 있습니다.

다음 코드는 pub/sub 트리거의 키를 사용하여 명령을 사용하여 GET 입력 바인딩에서 값을 가져오고 기록합니다.

package com.function.RedisInputBinding;

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

public class SetGetter {
    @FunctionName("SetGetter")
    public void run(
            @RedisPubSubTrigger(
                name = "key",
                connection = "redisConnectionString",
                channel = "__keyevent@0__:set")
                String key,
            @RedisInput(
                name = "value",
                connection = "redisConnectionString",
                command = "GET {Message}")
                String value,
            final ExecutionContext context) {
            context.getLogger().info("Key '" + key + "' was set to value '" + value + "'");
    }
}

이 function.json Azure Cache for Redis 인스턴스의 GET 메시지에 대한 pub/sub 트리거 및 입력 바인딩을 모두 정의합니다.

{
    "bindings": [
        {
            "type": "redisPubSubTrigger",
            "connection": "redisConnectionString",
            "channel": "__keyevent@0__:set",
            "name": "key",
            "direction": "in"
        },
        {
            "type": "redis",
            "connection": "redisConnectionString",
            "command": "GET {Message}",
            "name": "value",
            "direction": "in"
        }
    ],
    "scriptFile": "index.js"
}

이 JavaScript 코드(index.js)는 pub/sub 트리거에서 제공하는 키와 관련된 캐시된 값을 다시 시도하고 기록합니다.


module.exports = async function (context, key, value) {
    context.log("Key '" + key + "' was set to value '" + value + "'");
}

이 function.json Azure Cache for Redis 인스턴스의 GET 메시지에 대한 pub/sub 트리거 및 입력 바인딩을 모두 정의합니다.

{
    "bindings": [
        {
            "type": "redisPubSubTrigger",
            "connection": "redisConnectionString",
            "channel": "__keyevent@0__:set",
            "name": "key",
            "direction": "in"
        },
        {
            "type": "redis",
            "connection": "redisConnectionString",
            "command": "GET {Message}",
            "name": "value",
            "direction": "in"
        }
    ],
    "scriptFile": "run.ps1"
}

이 PowerShell 코드(run.ps1)는 pub/sub 트리거에서 제공하는 키와 관련된 캐시된 값을 검색하고 기록합니다.

param($key, $value, $TriggerMetadata)
Write-Host "Key '$key' was set to value '$value'"

다음 예제에서는 Azure Cache for Redis 인스턴스의 GET 메시지에 대한 입력 바인딩과 함께 pub/sub 트리거를 사용합니다. 이 예제는 v1 또는 v2 Python 프로그래밍 모델을 사용하는지 여부에 따라 달라집니다.

이 function.json Azure Cache for Redis 인스턴스의 GET 메시지에 대한 pub/sub 트리거 및 입력 바인딩을 모두 정의합니다.

{
    "bindings": [
        {
            "type": "redisPubSubTrigger",
            "connection": "redisConnectionString",
            "channel": "__keyevent@0__:set",
            "name": "key",
            "direction": "in"
        },
        {
            "type": "redis",
            "connection": "redisConnectionString",
            "command": "GET {Message}",
            "name": "value",
            "direction": "in"
        }
    ]
}

이 Python 코드(__init__.py)는 pub/sub 트리거에서 제공하는 키와 관련된 캐시된 값을 다시 시도하고 기록합니다.


import logging

def main(key: str, value: str):
    logging.info("Key '" + key + "' was set to value '" + value + "'")

구성 섹션에서는 이러한 속성을 설명합니다.

특성

참고 항목

이 바인딩에 대해 모든 명령이 지원되는 것은 아닙니다. 현재 단일 출력을 반환하는 읽기 명령만 지원됩니다. 전체 목록은 여기에서 찾을 수 있습니다.

Attribute 속성 설명
Connection 다음과 같이 캐시 연결 문자열 포함하는 애플리케이션 설정이름입니다.<cacheName>.redis.cache.windows.net:6380,password...
Command 캐시에서 실행할 redis-cli 명령은 다음과 같은 GET keyHGET key field공백으로 구분된 모든 인수를 사용합니다.

주석

주석은 RedisInput 다음 속성을 지원합니다.

속성 설명
name 특정 입력 바인딩의 이름입니다.
connection 다음과 같이 캐시 연결 문자열 포함하는 애플리케이션 설정이름입니다.<cacheName>.redis.cache.windows.net:6380,password...
command 캐시에서 실행할 redis-cli 명령은 다음과 같은 GET keyHGET key field공백으로 구분된 모든 인수를 사용합니다.

구성

다음 표에서는 function.json 파일에 설정한 바인딩 구성 속성에 대해 설명합니다.

function.json 속성 설명
connection 다음과 같이 캐시 연결 문자열 포함하는 애플리케이션 설정이름입니다.<cacheName>.redis.cache.windows.net:6380,password...
command 캐시에서 실행할 redis-cli 명령은 다음과 같은 GET keyHGET key field공백으로 구분된 모든 인수를 사용합니다.

참고 항목

Functions용 Python v2 및 Node.js v4는 function.json 사용하여 함수를 정의하지 않습니다. 이러한 두 새 언어 버전은 현재 Azure Redis Cache 바인딩에서 지원되지 않습니다.

전체 예제는 예제 섹션을 참조하세요.

사용

입력 바인딩은 캐시에서 문자열을 수신해야 합니다.

사용자 지정 형식을 바인딩 매개 변수로 사용하는 경우 확장은 JSON 형식 문자열을 이 매개 변수의 사용자 지정 형식으로 역직렬화하려고 합니다.