你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Redis 的 Azure Functions 概述

本文介绍如何将 Azure 托管 Redis 或 Azure Cache for Redis 与 Azure Functions 配合使用来创建优化的无服务器和事件驱动的体系结构。

Azure Functions 提供事件驱动的编程模型,其中触发器和绑定是关键功能。 使用 Azure Functions,可以轻松生成事件驱动的无服务器应用程序。 Azure Redis 服务(Azure 托管 Redis 和 Azure Redis 缓存)提供一组构建基块和最佳做法,用于生成分布式应用程序,包括微服务、状态管理、发布/子消息传送等。

Azure Redis 可用作 Azure Functions 的触发器,允许启动无服务器工作流。 此功能在数据体系结构(如后写缓存或任何基于事件的体系结构)中非常有用。

可以集成 Azure Redis 和 Azure Functions,以生成对 Azure Redis 或外部系统的事件做出响应的函数。

操作 方向 支持级别
Redis 发布订阅消息上的触发器 触发器 预览
Redis 列表上的触发器 触发器 预览
Redis 流上的触发器 触发器 预览
读取缓存值 输入 预览
写入值以缓存 输出 预览

函数触发器和绑定的可用性范围

Azure Redis 缓存(基本、标准、高级、企业、企业闪存) Azure 托管 Redis (内存优化、基本、计算优化、闪存优化)
Pub/Sub
列表
绑定

重要

目前,仅在弹性高级计划或专用应用服务计划中运行的函数支持 Redis 触发器。

安装扩展

Functions 在隔离的 C# 工作进程中运行。 若要了解详细信息,请参阅有关在独立工作进程中运行 C# Azure Functions 的指南

通过安装此 NuGet 包将该扩展添加到你的项目。

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Redis

安装捆绑包

  1. 创建 Java 函数项目。 你可以使用 Maven:mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=8

  2. 可以通过在 host.json 文件中添加或替换以下代码,添加扩展捆绑包:

    {
      "version": "2.0",
      "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
        "version": "[4.11.*, 5.0.0)"
      }
    }
    

    警告

    Redis 扩展目前仅在预览版捆绑包中可用。

  3. 将用于 Redis 绑定的 Java 库添加到 pom.xml 文件:

    <dependency>
      <groupId>com.microsoft.azure.functions</groupId>
      <artifactId>azure-functions-java-library-redis</artifactId>
      <version>${azure.functions.java.library.redis.version}</version>
    </dependency>
    

可以通过在 host.json 文件中添加或替换以下代码,添加扩展捆绑包:

  {
    "version": "2.0",
    "extensionBundle": {
      "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
      "version": "[4.11.*, 5.0.0)"
  }
}

警告

Redis 扩展目前仅在预览版捆绑包中可用。

Redis 连接字符串

Azure Redis 触发器和绑定具有缓存连接字符串所需的属性。 可以在 Azure 托管 Redis 或 Azure Redis 缓存门户的“访问密钥”菜单上找到连接字符串。 Redis 触发器或绑定会通过传递给 Connection 参数的名称查找包含连接字符串的环境变量。

在本地开发中,可以使用 local.settings.json 文件定义 Connection。 在部署到 Azure 时,可以使用应用程序设置

使用 Azure 函数连接到缓存实例时,可以在部署中使用三种类型的连接:连接字符串、系统分配的托管标识和用户分配的托管标识

对于本地开发,还可以使用服务主体机密。

使用 appsettings 配置以下每种客户端身份验证类型,假设 Connection 在函数中设置为 Redis

连接字符串

"Redis": "<cacheName>.<region>.redis.azure.net:10000,password=..."

系统分配的托管标识

"Redis:redisHostName": "<cacheName>.<region>.redis.azure.net",
"Redis:principalId": "<principalId>"

用户分配的托管标识

"Redis:redisHostName": "<cacheName>.<region>.redis.azure.net",
"Redis:principalId": "<principalId>",
"Redis:clientId": "<clientId>"

服务主体机密

使用服务主体机密的连接仅在本地开发期间可用。

"Redis:redisHostName": "<cacheName>.<region>.redis.azure.net",
"Redis:principalId": "<principalId>",
"Redis:clientId": "<clientId>"
"Redis:tenantId": "<tenantId>"
"Redis:clientSecret": "<clientSecret>"