Azure Functions için Yönetilen Redis çıkış bağlamasını Azure

Azure Yönetilen Redis çıkış bağlamaları, önbellekteki kullanılabilir tetikleyici kümesini temel alarak önbellekteki anahtarları değiştirmenize olanak tanır.

Kurulum ve yapılandırma ayrıntıları hakkında bilgi için genel bakışa bakın.

İşlev bağlamaları için kullanılabilirlik kapsamı

Bağlama Türü Yönetilen Redis'i Azure Azure Cache for Redis
Çıktı Yes Yes

Önemli

Azure Yönetilen Redis veya Azure Cache for Redis Kurumsal katmanlarını kullanırken 6380 veya 6379 numaralı bağlantı noktası yerine 10000 numaralı bağlantı noktasını kullanın.

Önemli

İşlevler için Node.js v4 modeli henüz Azure Cache for Redis uzantısı tarafından desteklenmiyor. v4 modelinin nasıl çalıştığı hakkında daha fazla bilgi için Azure Functions Node.js geliştirici kılavuzuna bakın. v3 ile v4 arasındaki farklar hakkında daha fazla bilgi edinmek için geçiş kılavuzuna bakın.

Önemli

İşlevler için Python v2 modeli henüz Azure Cache for Redis uzantısı tarafından desteklenmiyor. v2 modelinin nasıl çalıştığı hakkında daha fazla bilgi için Azure Functions Python geliştirici kılavuzuna bakın.

Örnek

C# işlevi aşağıdaki C# modlarından biri kullanılarak oluşturulabilir:

  • Yalıtılmış çalışan modeli: Çalışma zamanından yalıtılmış bir çalışan işleminde çalışan derlenmiş C# işlevi. LTS ve LTS dışı sürümler .NET ve .NET Framework üzerinde çalışan C# işlevlerini desteklemek için yalıtılmış çalışan işlemi gereklidir. Yalıtılmış çalışan işlemi işlevleri için uzantılar Microsoft.Azure.Functions.Worker.Extensions.* ad alanlarını kullanır.
  • İşlem içi model: İşlevler çalışma zamanıyla aynı işlemde çalışan derlenmiş C# işlevi. Bu modelin bir varyasyonunda, İşlevler öncelikle C# portalı düzenleme için desteklenen C# betiği kullanılarak çalıştırılabilir. İşlem içi işlevlerin uzantıları Microsoft.Azure.WebJobs.Extensions.* ad alanlarını kullanır.

Aşağıdaki örnekte, aynı Redis örneğine bir çıkış bağlaması olan küme olayında bir pub/sub tetikleyicisi gösterilmektedir. Küme olayı önbelleği tetikler ve çıkış bağlaması işlevi tetikleyen anahtar için bir delete komutu döndürür.

Önemli

.NET işlevleri için isolated worker modelinin in-process modeli üzerinden kullanılması önerilir. in-process ve isolated worker modellerinin karşılaştırması için, Azure Functions .NET için isolated worker modeli ile in-process modeli arasındaki farkları görün.


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

Aşağıdaki örnekte, aynı Redis örneğine bir çıkış bağlaması olan küme olayında bir pub/sub tetikleyicisi gösterilmektedir. Küme olayı önbelleği tetikler ve çıkış bağlaması işlevi tetikleyen anahtar için bir delete komutu döndürür.

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

Bu örnekte, aynı Redis örneğine çıkış bağlaması olan küme olayında bir pub/sub tetikleyicisi gösterilmektedir. Küme olayı önbelleği tetikler ve çıkış bağlaması işlevi tetikleyen anahtar için bir delete komutu döndürür.

Bağlamalar 'function.json' dosyasında tanımlanır:

{
    "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"
}

Dosyadaki index.js bu kod, anahtarı tetikleyiciden alır ve önbelleğe alınan öğeyi silmek için çıkış bağlamasına döndürür.

module.exports = async function (context, key) {
    context.log("Deleting recently SET key '" + key + "'");
    return key;
}

Bu örnekte, aynı Redis örneğine çıkış bağlaması olan küme olayında bir pub/sub tetikleyicisi gösterilmektedir. Küme olayı önbelleği tetikler ve çıkış bağlaması işlevi tetikleyen anahtar için bir delete komutu döndürür.

Bağlamalar bu function.json dosyada tanımlanır:

{
    "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"
}

Dosyadaki run.ps1 bu kod, anahtarı tetikleyiciden alır ve önbelleğe alınan öğeyi silmek için çıkış bağlamasına geçirir.

param($key, $TriggerMetadata)
Write-Host "Deleting recently SET key '$key'"
Push-OutputBinding -Name retVal -Value $key

Bu örnekte, aynı Redis örneğine çıkış bağlaması olan küme olayında bir pub/sub tetikleyicisi gösterilmektedir. Küme olayı önbelleği tetikler ve çıkış bağlaması işlevi tetikleyen anahtar için bir delete komutu döndürür.

Bağlamalar bu function.json dosyada tanımlanır:

{
    "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"
}

Dosyadaki __init__.py bu kod, anahtarı tetikleyiciden alır ve önbelleğe alınan öğeyi silmek için çıkış bağlamasına geçirir.

import logging

def main(key: str) -> str:
    logging.info("Deleting recently SET key '" + key + "'")
    return key

Özellikler

Not

Bu bağlama için tüm komutlar desteklenir.

Çıkış bağlama parametresini tanımlama yönteminiz, C# işlevlerinizin işlem içinde mi yoksa yalıtılmış bir çalışan işleminde mi çalıştığına bağlıdır.

Çıkış bağlaması şu şekilde tanımlanır:

Tanım Örnek Açıklama
Bir out parametrede [Redis(<Connection>, <Command>)] out string <Return_Variable> yöntemi tarafından döndürülen dize değişkeni, bağlamanın komutu belirli bir önbellekte yürütmek için kullandığı bir anahtar değeridir.

Bu durumda, yöntemi tarafından döndürülen tür, bağlamanın komutu belirli bir önbellekte yürütmek için kullandığı bir anahtar değeridir.

İşlevinizin birden çok çıkış bağlaması olduğunda, bağlama özniteliğini, bağlamanın komutu belirli bir önbellekte yürütmek için kullandığı anahtar değeri olan bir türün özelliğine uygulayabilirsiniz. Daha fazla bilgi için bkz . Birden çok çıkış bağlaması.


C# işlem modundan bağımsız olarak, aynı özellikler çıkış bağlama özniteliği tarafından desteklenir:

Öznitelik özelliği Açıklama
Connection Önbellek connection string içeren application ayarının adı, örneğin: <cacheName>.redis.cache.windows.net:6380,password...
Command Önbellekte yürütülecek redis-cli komutu, örneğin: DEL.

Ek Açıklamalar

Ek RedisOutput açıklama şu özellikleri destekler:

Özellik Açıklama
name Belirli giriş bağlamasının adı.
connection Önbellek connection string içeren application ayarının adı, örneğin: <cacheName>.redis.cache.windows.net:6380,password...
command Önbellekte yürütülecek redis-cli komutu, örneğin: DEL.

Yapılandırma

Aşağıdaki tabloda, function.json dosyasında ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır.

Özellik Açıklama
name Belirli giriş bağlamasının adı.
connection Önbellek connection string içeren application ayarının adı, örneğin: <cacheName>.redis.cache.windows.net:6380,password...
command Önbellekte yürütülecek redis-cli komutu, örneğin: DEL.

Tam örnekler için Örnek bölümüne bakın.

Kullanım

Çıkış, belirli bir komutun uygulandığı önbellek girişinin anahtarı olan bir dize döndürür.

Dağıtımlarınızdaki bir Azure Functions örneğinden Redis Cache'e izin verilen üç tür bağlantı vardır. Yerel geliştirme için hizmet sorumlusu gizli dizilerini de kullanabilirsiniz. işlevinde appsettings olarak ayarlandığı varsayılarak aşağıdaki istemci kimlik doğrulaması türlerinin Connection her birini yapılandırmak için Redis öğesini kullanın.

Önemli

en iyi güvenlik için işlev uygulamanızın mümkünse istekleri önbelleğinize karşı yetkilendirmek için yönetilen kimliklerle Microsoft Entra ID kullanması gerekir. Microsoft Entra ID ve yönetilen kimlikleri kullanarak yetkilendirme, paylaşılan erişim anahtarı yetkilendirmesi üzerinden üstün güvenlik ve kullanım kolaylığı sağlar. Önbelleğinizle yönetilen kimlikleri kullanma hakkında daha fazla bilgi için bkz. Önbellek kimlik doğrulaması için Microsoft Entra ID kullanma.