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.* 네임스페이스를 사용합니다.

다음 예제에서는 동일한 Redis 인스턴스에 대한 출력 바인딩을 사용하여 set 이벤트의 pub/sub 트리거를 보여 줍니다. set 이벤트는 캐시를 트리거하고 출력 바인딩은 함수를 트리거한 키에 대한 삭제 명령을 반환합니다.

Important

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

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 };
        }
    }
}

다음 예제에서는 동일한 Redis 인스턴스에 대한 출력 바인딩을 사용하여 set 이벤트의 pub/sub 트리거를 보여 줍니다. set 이벤트는 캐시를 트리거하고 출력 바인딩은 함수를 트리거한 키에 대한 삭제 명령을 반환합니다.

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;
    }
}

이 예제에서는 동일한 Redis 인스턴스에 대한 출력 바인딩을 사용하여 set 이벤트의 pub/sub 트리거를 보여 줍니다. set 이벤트는 캐시를 트리거하고 출력 바인딩은 함수를 트리거한 키에 대한 삭제 명령을 반환합니다.

바인딩은 이 '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;
}

이 예제에서는 동일한 Redis 인스턴스에 대한 출력 바인딩을 사용하여 set 이벤트의 pub/sub 트리거를 보여 줍니다. set 이벤트는 캐시를 트리거하고 출력 바인딩은 함수를 트리거한 키에 대한 삭제 명령을 반환합니다.

바인딩은 다음 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

이 예제에서는 동일한 Redis 인스턴스에 대한 출력 바인딩을 사용하여 set 이벤트의 pub/sub 트리거를 보여 줍니다. set 이벤트는 캐시를 트리거하고 출력 바인딩은 함수를 트리거한 키에 대한 삭제 명령을 반환합니다.

바인딩은 다음 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# 함수가 In Process에서 실행되는지 격리된 작업자 프로세스에서 실행되는지에 따라 달라집니다.

출력 바인딩은 다음과 같이 정의됩니다.

정의 예제 설명
매개 변수에서 out [Redis(<Connection>, <Command>)] out string <Return_Variable> 메서드에서 반환되는 문자열 변수는 바인딩이 특정 캐시에 대해 명령을 실행하는 데 사용하는 키 값입니다.

이 경우 메서드에서 반환되는 형식은 바인딩이 특정 캐시에 대해 명령을 실행하는 데 사용하는 키 값입니다.

함수에 여러 출력 바인딩이 있는 경우 바인딩 특성을 키 값인 형식의 속성에 적용할 수 있습니다. 이 속성은 바인딩이 특정 캐시에 대해 명령을 실행하는 데 사용합니다. 자세한 내용은 여러 출력 바인딩을 참조 하세요.


C# 프로세스 모드에 관계없이 출력 바인딩 특성에서 동일한 속성이 지원됩니다.

Attribute 속성 설명
Connection 다음과 같이 캐시 연결 문자열 포함하는 애플리케이션 설정이름입니다.<cacheName>.redis.cache.windows.net:6380,password...
Command 캐시에서 실행할 redis-cli 명령(예: DEL.

주석

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

속성 설명
name 특정 입력 바인딩의 이름입니다.
connection 다음과 같이 캐시 연결 문자열 포함하는 애플리케이션 설정이름입니다.<cacheName>.redis.cache.windows.net:6380,password...
command 캐시에서 실행할 redis-cli 명령(예: DEL.

구성

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

속성 설명
name 특정 입력 바인딩의 이름입니다.
connection 다음과 같이 캐시 연결 문자열 포함하는 애플리케이션 설정이름입니다.<cacheName>.redis.cache.windows.net:6380,password...
command 캐시에서 실행할 redis-cli 명령(예: DEL.

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

사용

출력은 특정 명령을 적용하는 캐시 항목의 키인 문자열을 반환합니다.

배포에서 Azure Functions 인스턴스에서 Redis Cache로 허용되는 세 가지 유형의 연결이 있습니다. 로컬 개발의 경우 서비스 주체 비밀을 사용할 수도 있습니다. 함수에서 appsettings 설정된 것으로 가정 Connection 하여 다음 유형의 클라이언트 인증을 각각 구성할 수 Redis 있습니다.