适用于 Azure Cache for Redis 的 Azure 函数概述

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

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

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

可以集成 Azure Cache for Redis 和 Azure Functions 来生成函数,以响应来自 Azure Cache for Redis 或外部系统的事件。

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

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

Basic 标准、高级 Enterprise、Enterprise Flash
Pub/Sub
列表
绑定

重要

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

安装扩展

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

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

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

安装捆绑包

  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 Cache for Redis 触发器和绑定具有缓存连接字符串的必需属性。 可以在 Azure Cache for Redis 门户的访问密钥菜单上找到该连接字符串。 Redis 触发器或绑定会通过传递给 Connection 参数的名称查找包含连接字符串的环境变量。

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

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

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

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

连接字符串

"Redis": "<cacheName>.redis.cache.chinacloudapi.cn:6380,password=..."

系统分配的托管标识

"Redis:redisHostName": "<cacheName>.redis.cache.chinacloudapi.cn",
"Redis:principalId": "<principalId>"

用户分配的托管标识

"Redis:redisHostName": "<cacheName>.redis.cache.chinacloudapi.cn",
"Redis:principalId": "<principalId>",
"Redis:clientId": "<clientId>"

服务主体机密

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

"Redis:redisHostName": "<cacheName>.redis.cache.chinacloudapi.cn",
"Redis:principalId": "<principalId>",
"Redis:clientId": "<clientId>"
"Redis:tenantId": "<tenantId>"
"Redis:clientSecret": "<clientSecret>"