快速入门:将 Azure Cache for Redis 与 Go 配合使用
在本文中,你将了解如何在 Go 应用中构建 REST API,该应用将存储和检索由 Azure Cache for Redis 中的 HASH 数据结构支持的用户信息。
如果要直接跳到代码,请参阅 GitHub 上的 Go 快速入门。
若要创建缓存,请登录到 Azure 门户并选择“创建资源” 。
在“入门”页上的搜索框中键入“Azure Cache for Redis”。 然后选择创建。
在“新建 Redis 缓存”页上配置缓存的设置。
设置 选择值 说明 订阅 单击下拉箭头并选择你的订阅。 要在其下创建此新的 Azure Cache for Redis 实例的订阅。 资源组 单击下拉箭头并选择一个资源组,或者选择新建并输入新的资源组名称。 要在其中创建缓存和其他资源的资源组的名称。 将所有应用资源放入一个资源组可以轻松地统一管理或删除这些资源。 DNS 名称 输入唯一名称。 缓存名称必须是包含 1 到 63 个字符的字符串,只能包含数字、字母或连字符。 该名称必须以数字或字母开头和结尾,且不能包含连续的连字符。 缓存实例的主机名是 <DNS name>.redis.cache.chinacloudapi.cn。 位置 单击下拉箭头并选择一个位置。 选择使用缓存的其他服务附近的区域。 缓存 SKU 打开下拉列表并选择一个 SKU。 此 SKU 决定可用于缓存的大小、性能和功能参数。 有关详细信息,请参阅用于 Redis 的 Azure 缓存概述。 缓存大小 打开下拉列表并选择缓存的大小 有关详细信息,请参阅用于 Redis 的 Azure 缓存概述。 选择网络选项卡,或选择网络按钮(位于页面底部) 。
在网络选项卡中,选择你的连接方法。
选择“下一步: 高级”选项卡,或选择页面底部的“下一步: 高级”按钮,以查看“高级”选项卡。
- 对于“基本”或“标准”缓存,请切换非 TLS 端口的选项。 还可以选择是否要启用“Microsoft Entra 身份验证”。
- 对于“高级”缓存,请配置非 TLS 端口、群集、托管标识和数据持久性的设置。 还可以选择是否要启用“Microsoft Entra 身份验证”。
选择下一步: 标记选项卡,或选择页面底部的下一步: 标记按钮 。
或者,在标记选项卡中,如果希望对资源分类,请输入名称或值。
选择“查看 + 创建”。 随后你会转到“查看 + 创建”选项卡,Azure 将在此处验证配置。
显示绿色的“已通过验证”消息后,选择创建。
创建缓存需要一段时间。 可以在 Azure Cache for Redis 的概述页上监视进度。 如果“状态”显示为“正在运行”,则表示该缓存可供使用。
若要连接到你的 Azure Cache for Redis 服务器,缓存客户端需要该缓存的主机名、端口和密钥。 在某些客户端中,这些项的名称可能略有不同。 可以从 Azure 门户检索主机名、端口和访问密钥。
若要获取访问密钥,请从“资源”菜单中选择“身份验证”。 然后,选择“访问密钥”选项卡。
若要获取缓存的主机名和端口,请从“资源”菜单中选择“概述”。 主机名的格式为 <DNS 名称>.redis.cache.chinacloudapi.cn。
如果有意了解代码的工作原理,可以查看以下代码片段。 否则,可以直接跳到运行应用程序。
开放源代码 go-redis 库用于与 Azure Cache for Redis 交互。
main
函数首先读取 Azure Cache for Redis 实例的主机名和密码(访问密钥)。
func main() {
redisHost := os.Getenv("REDIS_HOST")
redisPassword := os.Getenv("REDIS_PASSWORD")
...
然后,我们会建立与 Azure Cache for Redis 的连接。 我们使用 tls.Config--Azure Cache for Redis 只接受以 TLS 1.2 作为所需的最低版本的安全连接。
...
op := &redis.Options{Addr: redisHost, Password: redisPassword, TLSConfig: &tls.Config{MinVersion: tls.VersionTLS12}}
client := redis.NewClient(op)
ctx := context.Background()
err := client.Ping(ctx).Err()
if err != nil {
log.Fatalf("failed to connect with redis instance at %s - %v", redisHost, err)
}
...
如果连接成功,HTTP 处理程序将配置为处理 POST
和 GET
操作,HTTP 服务器已启动。
备注
gorilla mux 库用于路由(尽管这不是必须的,而且我们可以通过使用这个示例应用程序的标准库来避免这种情况)。
uh := userHandler{client: client}
router := mux.NewRouter()
router.HandleFunc("/users/", uh.createUser).Methods(http.MethodPost)
router.HandleFunc("/users/{userid}", uh.getUser).Methods(http.MethodGet)
log.Fatal(http.ListenAndServe(":8080", router))
userHandler
结构封装了由 createUser
、getUser
方法使用的 redis.Client - 为了简洁起见,没有包含这些方法的代码。
createUser
:接受 JSON 有效负载(包含用户信息)并将其保存为 Azure Cache for Redis 中的HASH
。getUser
:从HASH
提取用户信息,如果找不到,则返回 HTTP404
响应。
type userHandler struct {
client *redis.Client
}
...
func (uh userHandler) createUser(rw http.ResponseWriter, r *http.Request) {
// details omitted
}
...
func (uh userHandler) getUser(rw http.ResponseWriter, r *http.Request) {
// details omitted
}
首先从 GitHub 克隆应用程序开始。
打开命令提示符,然后创建一个新的名为
git-samples
的文件夹。md "C:\git-samples"
打开 git 终端窗口(例如 git bash)。 使用
cd
命令转到新文件夹,你将在其中克隆示例应用。cd "C:\git-samples"
运行下列命令,克隆示例存储库。 此命令在计算机上创建示例应用程序的副本。
git clone https://github.com/Azure-Samples/azure-redis-cache-go-quickstart.git
应用程序接受环境变量形式的连接和凭据。
在 Azure 门户中为 Azure Cache for Redis 实例提取“主机名”和“访问密钥”(可通过访问密钥获得)
将它们设置为相应的环境变量:
set REDIS_HOST=<Host name>:<port> (e.g. <name of cache>.redis.cache.chinacloudapi.cn:6380) set REDIS_PASSWORD=<Primary Access Key>
在“终端”窗口中,切换到正确的文件夹。 例如:
cd "C:\git-samples\azure-redis-cache-go-quickstart"
在终端中,运行以下命令以启动应用程序。
go run main.go
HTTP 服务器将在端口 8080
上启动。
创建一些用户条目。 下面的示例使用 curl:
curl -i -X POST -d '{"id":"1","name":"foo1", "email":"foo1@baz.com"}' localhost:8080/users/ curl -i -X POST -d '{"id":"2","name":"foo2", "email":"foo2@baz.com"}' localhost:8080/users/ curl -i -X POST -d '{"id":"3","name":"foo3", "email":"foo3@baz.com"}' localhost:8080/users/
使用
id
提取现有用户:curl -i localhost:8080/users/1
应获得 JSON 响应,如下所示:
{ "email": "foo1@bar", "id": "1", "name": "foo1" }
如果尝试提取一个不存在的用户,将收到 HTTP
404
。 例如:curl -i localhost:8080/users/100 #response HTTP/1.1 404 Not Found Date: Fri, 08 Jan 2021 13:43:39 GMT Content-Length: 0
要继续使用在本文中创建的资源,请保留资源组。
否则,如果已完成资源,可以删除创建的 Azure 资源组以避免产生费用。
重要
删除资源组的操作不可逆。 删除资源组时,包含在其中的所有资源会被永久删除。 请确保不会意外删除错误的资源组或资源。 如果在现有资源组(其中包含要保留的资源)内创建了此资源,可以逐个删除这些资源,而不是删除资源组。
登录到 Azure 门户,然后选择“资源组”。
选择要删除的资源组。
如果有多个资源组,请使用“筛选任何字段...”框,键入为本文创建的资源组的名称。 在结果列表中选择资源组。
选择“删除资源组”。
系统会要求确认是否删除资源组。 键入资源组的名称进行确认,然后选择“删除”。
片刻之后,将会删除该资源组及其所有资源。
本快速入门介绍了如何通过 GO 开始使用 Azure Cache for Redis。 你已配置并运行了一个简单的基于 REST API 的应用程序,以创建和获取由 Redis HASH
数据结构支持的用户信息。