学习


Azure Functions 是 Microsoft 提供的基于事件的无服务器计算平台,旨在加速和简化无服务器应用程序开发。它允许开发人员编写更少的代码,在没有额外设置的情况下本地构建和调试,并在云中大规模部署和操作。

工作原理

Azure Functions 允许您将系统的逻辑实现到现成的代码块中。这些代码块称为“函数”。 Azure 函数的执行由事件触发 。每当执行需求增加时,就会自动向服务分配越来越多的资源,并且当请求下降时,所有额外的资源和应用程序实例会自动下降。简而言之,作为开发人员,您现在可以专注于对您最重要的代码部分,Azure Functions 会处理其余部分。

Azure Functions 根据需要提供尽可能多的或尽可能少的计算资源 来满足应用程序的需求。按需提供计算资源是 Azure Functions 中的无服务器计算 的本质。

Microsoft Azure Functions 的优势

  • Azure Functions 提供自动化的灵活扩展。
  • 它允许您使用集成工具和内置 DevOps 功能构建、调试、部署和监控。
  • 它 支持多种编程语言 ,如 C#、Java、JavaScript、Python 和 PowerShell。
  • 它允许您在 Visual Studio 和 Visual Studio Code 上使用函数扩展,以便在本地系统上更快、更高效地进行开发。
  • 使用 Azure Functions,您可以使用 Azure Pipelines 设置 CI/CD。
  • 对于处理大量数据、集成系统、使用 IoT 以及构建简单的 API 和微服务,它是一个不错的解决方案。
  • 它用于将单体架构分解成松散耦合的函数。
  • 它允许您 将函数部署到 Kubernetes.

在本教程中,您将学习如何开始使用 Azure Functions 和 Redis。

入门

  • 步骤 1. 登录 Microsoft Azure 门户
  • 步骤 2. 设置 Azure Cache for Redis
  • 步骤 3. 配置 Redis 缓存的密钥
  • 步骤 4. 验证 Redis 数据库是否可远程访问
  • 步骤 5. 在 Mac 上安装 Homebrew
  • 步骤 6. 安装 Visual Studio Code
  • 步骤 7. 安装 Azure Functions Core Tools
  • 步骤 8. 安装 Visual Studio Code 的 Azure Functions 扩展
  • 步骤 9. 将 Azure Function 连接到 Azure 帐户
  • 步骤 10. 克隆项目存储库
  • 步骤 11. 触发函数
  • 步骤 12. 验证 Azure Functions 应用程序是否正常工作
  • 步骤 13. 播种 Redis 数据库
  • 步骤 14. 使用 RedisInsight 运行查询

步骤 1. 登录 Microsoft Azure 门户

通过单击此链接创建具有活动订阅的 Azure 帐户: 免费创建帐户.

步骤 2. 设置“Azure Cache for Redis”

在搜索部分中键入“Azure Cache for Redis”,然后选择该服务

在“新建 Redis 缓存”窗口中,创建一个新的资源组,选择您首选的位置和缓存类型

完成条目后,单击“查看 + 创建”按钮。
部署完成后,将提供部署名称、订阅详细信息和资源组。

步骤 3. 配置 Redis 缓存的密钥

您需要密钥才能登录 Redis 数据库。单击左侧边栏中的“概述”选项以查看主密钥并将其保存以备将来参考。

步骤 4. 验证 Redis 数据库是否可访问

redis-cli -h demorediss.redis.cache.windows.net -p 6379
demorediss.redis.cache.windows.net:6379> info modules
NOAUTH Authentication required.
demorediss.redis.cache.windows.net:6379> auth jsn9IdFXXXXXXXXXXXXXsAzCaDzLh6s=
OK
demorediss.redis.cache.windows.net:6379> get a1
"100"

步骤 5. 在 Mac 上安装 Homebrew

通过运行以下脚本安装 Homebrew 包管理器

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

步骤 6. 安装 Visual Studio Code

Visual Studio Code 是一款轻量级但功能强大的源代码编辑器,可在您的桌面上运行,可用于 Windows、macOS 和 Linux。它附带对 JavaScript、TypeScript 和 Node.js 的内置支持,并拥有丰富的扩展生态系统,可用于其他语言(如 C++、C#、Java、Python、PHP、Go)和运行时(如 .NET 和 Unity)。通过这些 入门视频 开始使用 VS Code 的旅程。

步骤 7. 安装 Azure Functions Core Tools

brew tap azure/functions
brew install azure-functions-core-tools@4
# if upgrading on a machine that has 2.x or 3.x installed:
brew link --overwrite azure-functions-core-tools@4

步骤 8. 安装 Visual Studio Code 的 Azure Functions 扩展

使用 Azure Functions 扩展可以快速创建、调试、管理和部署直接来自 VS Code 的无服务器应用程序。

步骤 9. 将 Azure Function 连接到 Azure 帐户

步骤 10. 克隆项目存储库

在本教程中,我们将使用使用 C# 构建的婴儿姓名计数器应用程序。要开始,我们将首先克隆存储库

git clone https://github.com/redis-developer/Baby-Names-Func
在 local-settings.json 文件中添加“Azure Cache for Redis”端点 URL 详细信息,如下所示:
{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "dotnet"
    "redisCacheConnectionString": "demorediss.redis.cache.windows.net"


  }
}

使用以下命令在 Visual Studio Code 中打开项目

cd Baby-Names-Func
code .

这将打开 VS Code。该函数将自动加载到插件中。

步骤 11. 触发函数

按 F5 自动执行函数。

如果要手动选择存储库、选择 .NET 框架等,请单击“创建新项目”。

您将在 VS Code 屏幕下找到以下输出

     1>Done Building Project "/Users/ajeetraina/projects/Baby-Names-Func/RedisFunctions.csproj" (Clean target(s)).

Terminal will be reused by tasks, press any key to close it.

> Executing task: dotnet build /property:GenerateFullPaths=true /consoleloggerparameters:NoSummary <

Microsoft (R) Build Engine version 17.0.0+c9eb9dd64 for .NET
Copyright (C) Microsoft Corporation. All rights reserved.

  Determining projects to restore...
  All projects are up-to-date for restore.
  RedisFunctions -> /Users/ajeetraina/projects/Baby-Names-Func/bin/Debug/net6.0/RedisFunctions.dll

Terminal will be reused by tasks, press any key to close it.

> Executing task: func host start <


Azure Functions Core Tools
Core Tools Version:       4.0.3971 Commit hash: d0775d487c93ebd49e9c1166d5c3c01f3c76eaaf  (64-bit)
Function Runtime Version: 4.0.1.16815

[2022-03-01T07:51:01.383Z] Found /Users/ajeetraina/projects/Baby-Names-Func/RedisFunctions.csproj. Using for user secrets file configuration.

Functions:

        CountBabyNames: [GET,POST] https://localhost:7071/api/getCount

        IncrementBabyName: [GET,POST] https://localhost:7071/api/increment

For detailed output, run func with --verbose flag.

步骤 12. 验证 Azure Functions 应用程序是否正常工作

步骤 13. 初始化 Redis 数据库

现在,让我们将 BabyNames 数据初始化到 Redis 数据库中。

git clone https://github.com/slorello89/Seed-Baby-Names

如果连接到 Redis 数据库并运行 MONITOR 命令,您应该会看到数据被插入到数据库中,如下所示

1646061655.966050 [0 122.171.48.244:60531] "CMS.INCRBY" "baby-names" "Rowen" "1"
1646061655.966050 [0 122.171.48.244:60531] "SELECT" "0"
1646061655.966050 [0 122.171.48.244:60531] "CMS.INCRBY" "baby-names" "Titus" "1"
1646061655.966050 [0 122.171.48.244:60531] "SELECT" "0"
1646061655.966050 [0 122.171.48.244:60531] "CMS.INCRBY" "baby-names" "Braxton" "1"
1646061655.966050 [0 122.171.48.244:60531] "SELECT" "0"
1646061655.966050 [0 122.171.48.244:60531] "CMS.INCRBY" "baby-names" "Alexander" "1"
1646061655.966050 [0 122.171.48.244:60531] "SELECT" "0"
1646061655.966050 [0 122.171.48.244:60531] "CMS.INCRBY" "baby-names" "Finnegan" "1"
1646061655.966050 [0 122.171.48.244:60531] "SELECT" "0"
1646061655.966050 [0 122.171.48.244:60531] "CMS.INCRBY" "baby-names" "Nasir" "1"
1646061655.966050 [0 122.171.48.244:60531] "SELECT" "0"
1646061655.966050 [0 122.171.48.244:60531] "CMS.INCRBY" "baby-names" "Fabian" "1"
1646061655.966050 [0 122.171.48.244:60531] "SELECT" "0"
1646061655.966050 [0 122.171.48.244:60531] "CMS.INCRBY" "baby-names" "Alexander" "1"
1646061655.966050 [0 122.171.48.244:60531] "SELECT" "0"
1646061655.966050 [0 122.171.48.244:60531] "CMS.INCRBY" "baby-names" "Emilio" "1"
1646061655.966050 [0 122.171.48.244:60531] "SELECT" "0"
1646061655.966050 [0 122.171.48.244:60531] "CMS.INCRBY" "baby-names" "Dax" "1"
1646061655.966050 [0 122.171.48.244:60531] "SELECT" "0"
1646061655.966050 [0 122.171.48.244:60531] "CMS.INCRBY" "baby-names" "Johnny" "1"
1646061655.966050 [0 122.171.48.244:60531] "SELECT" "0"
1646061655.966050 [0 122.171.48.244:60531] "CMS.INCRBY" "baby-names" "Mario" "1"
1646061655.966050 [0 122.171.48.244:60531] "SELECT" "0"
1646061655.966050 [0 122.171.48.244:60531] "CMS.INCRBY" "baby-names" "Lennox" "1"

步骤 14. 使用 RedisInsight 运行查询

在您的本地系统上设置 RedisInsight 并连接到 Redis 数据库。连接后,您应该能够运行以下查询

> CMS.INFO baby-names
1) width
2) (integer) 1000
3) depth
4) (integer) 10
5) count
6) (integer) 100000

> CMS.QUERY baby-names Johnny
1) 109