适用于 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 | 是 | 是 | 是 |
列表 | 是 | 是 | 是 |
流 | 是 | 是 | 是 |
绑定 | 是 | 是 | 是 |
安装扩展
Functions 在隔离的 C# 工作进程中运行。 若要了解详细信息,请参阅有关在独立工作进程中运行 C# Azure Functions 的指南。
通过安装此 NuGet 包将该扩展添加到你的项目。
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Redis --prerelease
安装捆绑包
创建 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 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>"