Aracılığıyla paylaş


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

bir işlev çalıştırıldığında, Redis için Azure Cache giriş bağlaması önbellekten veri alır ve bunu giriş parametresi olarak işlevinize geçirir.

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.* .

Ö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.

Aşağıdaki kod, bir komut kullanarak GET giriş bağlamasından değeri almak ve günlüğe kaydetmek için pub/sub tetikleyicisinden anahtarını kullanır:

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}'");
        }
    }
}

github deposunda Redis için Azure Cache giriş bağlaması için daha fazla örnek mevcuttur.

Aşağıdaki kod, bir komut kullanarak GET giriş bağlamasından değeri almak ve günlüğe kaydetmek için pub/sub tetikleyicisinden anahtarını kullanır:

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 + "'");
    }
}

Bu function.json hem bir pub/sub tetikleyicisi hem de Redis için Azure Cache örneğindeki GET iletisine giriş bağlaması tanımlar:

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

Bu JavaScript kodu (index.js) pub/sub tetikleyicisi tarafından sağlanan anahtarla ilgili önbelleğe alınmış değeri yeniden denenip günlüğe kaydeder.


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

Bu function.json hem bir pub/sub tetikleyicisi hem de Redis için Azure Cache örneğindeki GET iletisine giriş bağlaması tanımlar:

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

Bu PowerShell kodu (run.ps1'den), pub/sub tetikleyicisi tarafından sağlanan anahtarla ilgili önbelleğe alınmış değeri alır ve günlüğe kaydeder.

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

Aşağıdaki örnekte, bir Redis için Azure Cache örneğindeki GET iletisine giriş bağlaması olan bir pub/sub tetikleyicisi kullanılır. Örnek, v1 veya v2 Python programlama modelini kullanıp kullanmadığınıza bağlıdır.

Bu function.json hem bir pub/sub tetikleyicisi hem de Redis için Azure Cache örneğindeki GET iletisine giriş bağlaması tanımlar:

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

Bu Python kodu (__init__.py) pub/sub tetikleyicisi tarafından sağlanan anahtarla ilgili önbelleğe alınmış değeri yeniden denenip günlüğe kaydeder:


import logging

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

Yapılandırma bölümünde bu özellikler açıklanır.

Özellikler

Not

Bu bağlama için tüm komutlar desteklenmez. Şu anda yalnızca tek bir çıkış döndüren okuma komutları desteklenmektedir. Listenin tamamına buradan ulaşabilirsiniz

Ö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, boşluklarla ayrılmış tüm bağımsız değişkenlerle yürütülecek redis-cli komutu: GET key, HGET key field.

Ek Açıklamalar

Ek RedisInput 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, boşluklarla ayrılmış tüm bağımsız değişkenlerle birlikte, örneğin: GET key veya HGET key field.

Yapılandırma

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

function.json ö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, boşluklarla ayrılmış tüm bağımsız değişkenlerle yürütülecek redis-cli komutu: GET key, HGET key field.

Not

İşlevler için Python v2 ve Node.js v4, işlevi tanımlamak için function.json kullanmaz. Bu yeni dil sürümlerinin her ikisi de şu anda Azure Redis Cache bağlamaları tarafından desteklenmemektedir.

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

Kullanım

Giriş bağlaması önbellekten bir dize almayı bekler.

Bağlama parametresi olarak özel bir tür kullandığınızda, uzantı JSON biçimli bir dizeyi bu parametrenin özel türüne seri durumdan çıkarmaya çalışır.