你当前正在访问 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 Cache for Redis)提供了一组构建基块和最佳做法,用于生成分布式应用程序,包括微服务、状态管理、发布/订阅消息传送等。
Azure Redis 可用作 Azure Functions 的触发器,以支持启动无服务器工作流。 此功能在数据体系结构(如后写缓存或任何基于事件的体系结构)中非常有用。
可以集成 Azure Redis 和 Azure Functions 来生成函数,以响应来自 Azure Redis 或外部系统的事件。
操作 | 方向 |
---|---|
Redis 发布订阅消息上的触发器 | 触发器 |
Redis 列表上的触发器 | 触发器 |
Redis 流上的触发器 | 触发器 |
读取缓存值 | 输入 |
写入值以缓存 | 输出 |
函数触发器和绑定的可用性范围
层 | Azure Cache for Redis(基本、标准、高级、Enterprise 和 Enterprise Flash)。 | Azure 托管 Redis(内存优化、均衡、计算优化和闪存优化)。 |
---|---|---|
Pub/Sub | 是 | 是 |
列表 | 是 | 是 |
流 | 是 | 是 |
绑定 | 是 | 是 |
安装扩展
Functions 在隔离的 C# 工作进程中运行。 若要了解详细信息,请参阅有关在独立工作进程中运行 C# Azure Functions 的指南。
通过安装此 NuGet 包将该扩展添加到你的项目。
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Redis
安装捆绑包
创建 Java 函数项目。 你可以使用 Maven:
mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=8
可以通过在 host.json 文件中添加或替换以下代码,添加扩展捆绑包:
{ "version": "2.0", "extensionBundle": { "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview", "version": "[4.11.*, 5.0.0)" } }
警告
Redis 扩展目前仅在预览版捆绑包中可用。
将用于 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 Cache for Redis 门户的“访问密钥”菜单上找到该连接字符串。 Redis 触发器或绑定会通过传递给 Connection
参数的名称查找包含连接字符串的环境变量。
在本地开发中,可以使用 local.settings.json 文件定义 Connection
。 在部署到 Azure 时,可以使用应用程序设置。
使用 Azure 函数连接到缓存实例时,可以在部署中使用三种类型的连接:连接字符串、系统分配的托管标识和用户分配的托管标识。
对于本地开发,还可以使用服务主体机密。
重要
为了获得最佳安全性,函数应用应将 Microsoft Entra ID 与托管标识一起使用,以授权针对缓存的请求(如果可能)。 与共享访问密钥授权相比,使用 Microsoft Entra ID 和托管标识进行授权提供了更高的安全性和易用性。 若要详细了解如何将托管标识与缓存配合使用,请参阅使用 Microsoft Entra ID 进行缓存身份验证。
使用 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>"