Aracılığıyla paylaş


Azure İşlevleri için çıkış bağlamasını Redis için Azure Cache

Redis için Azure Cache çı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.

Önemli

İşlevler için Node.js v4 modeli henüz Redis için Azure Cache uzantısı tarafından desteklenmiyor. v4 modelinin nasıl çalıştığı hakkında daha fazla bilgi için Azure İşlevleri 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 Redis için Azure Cache uzantısı tarafından desteklenmiyor. v2 modelinin nasıl çalıştığı hakkında daha fazla bilgi için Azure İşlevleri 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 .NET ve .NET Framework dışındaki sürümlerde ç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 ad alanlarını kullanır Microsoft.Azure.Functions.Worker.Extensions.* .
  • İş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ı ad alanlarını kullanır Microsoft.Azure.WebJobs.Extensions.* .

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, işlem içi model üzerinde yalıtılmış çalışan modelinin kullanılması önerilir. İşlem içi ve yalıtılmış çalışan modellerinin karşılaştırması için bkz. yalıtılmış çalışan modeli ile Azure İşlevleri üzerinde .NET için işlem içi model arasındaki farklar.

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 bu '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 bağlantı dizesi içeren uygulama 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 bağlantı dizesi içeren uygulama 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 bağlantı dizesi içeren uygulama 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 İşlevleri ö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.