在本文中,您將了解如何在 Go 中建置 REST API,以在 Azure Cache for Redis 中儲存和擷取 雜湊資料結構所支援的使用者資訊。
跳至 GitHub 上的程式碼
如果要直接跳到程式碼,請參閱 GitHub 上的 Go 快速入門。
先決條件
建立 Azure Cache for Redis 執行個體
在 Azure 入口網站中,搜尋並選取 [Azure Cache for Redis]。
在 [Azure Cache for Redis] 頁面上,選取 [建立>Azure Cache for Redis]。
在 [新增 Redis 快取] 頁面的 [基本] 索引卷標上,設定下列設定:
- 訂用帳戶:選取要使用的訂用帳戶。
- 資源群組:選取資源群組,或選取 [ 新建 ],然後輸入新的資源組名。 將所有應用程式資源放在相同的資源群組中,可讓您輕鬆地管理或刪除它們。
-
名稱:輸入區域中唯一的快取名稱。 名稱必須:
- 為 1 到 63 個字元的字串。
- 只包含數字、字母和連接號。
- 以數字或字母開頭和結尾。
- 未包含連續的連字號。
- 區域:選擇與其他使用快取服務的服務靠近的 Azure 區域。
- 快取 SKU:選取 SKU 以判斷快取可用的大小、效能和功能。
- 快取大小:選取快取大小。 如需詳細資訊,請參閱 Azure Cache for Redis 概觀。
選取 網路 索引標籤,或選取 下一步:網路。
在 [網路] 索引標籤上,選取要用於快取的連線方法。 建議使用私人端點以增強安全性。 如果您選取 [私人端點],請選取 [新增私人端點 ],然後建立私人端點。
選取 [ 進階] 索引卷標,或選取 [ 下一步:進階]。
在 [ 進階 ] 窗格上,設定下列選項:
- 選取 [Microsoft [項目驗證 ] 或 [ 存取金鑰驗證]。 默認會啟用 entra Authentication Microsoft。
- 選擇是否 要啟用 非 TLS 埠。
- 針對進階快取,您可以設定或停用 可用性區域。 您無法在建立快取後停用可用性區域。 針對標準快取,系統會自動配置可用性區域。 可用性區域不適用於基本 SKU。
- 針對進階快取,請設定 複本計數、 叢集 和 分區計數、 系統指派的受控識別和數據 持續性的設定。
下圖顯示標準 SKU 的 [ 進階 ] 索引標籤。
這很重要
盡可能使用 Microsoft Entra 識別碼搭配受管理的身分,以授權對快取的存取要求。 使用 Microsoft Entra ID 和受控識別的授權可提供更佳的安全性,而且比共用存取密鑰授權更容易使用。 如需搭配快取使用受控識別的詳細資訊,請參閱 使用 Microsoft Entra ID 進行快取驗證。
或者,選取 [ 卷標] 索引標籤或選取 [ 下一步:標籤],然後輸入標籤名稱和值來分類快取資源。
選取 [檢閱 + 建立],一旦通過驗證,請選取 [ 建立]。
新的快取部署需要幾分鐘的時間。 您可以在入口網站 Azure Cache for Redis 頁面上監視部署進度。 當快取 狀態 顯示 [ 執行中] 時,快取即可供使用。
從 Azure 入口網站擷取主機名稱、連接埠和存取金鑰
若要連線 Azure Cache for Redis 伺服器,快取用戶端需要快取的主機名稱、連接埠和金鑰。 某些用戶端可能會以稍有不同的名稱來參考這些項目。 您可以從 Azure 入口網站取得主機名稱、連接埠和金鑰。
若要取得快取的主機名和埠,請從 [資源] 功能表中選取 [概觀]。 主機名稱的格式
<DNS name>.redis.cache.windows.net
為 。若要取得存取金鑰,請從 [資源] 功能選取 [驗證]。 然後,選取 [存取金鑰] 索引標籤。
檢閱程式碼 (選用)
如果您想要了解程式碼的運作方式,可以檢閱下列程式碼片段。 或是,隨意直接跳到執行應用程式。
開放原始碼 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 作為最低必要版本]/azure-cache-for-redis/cache-remove-tls-10-11.md 的安全連線。
...
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
結構會封裝 redis.Client,其由 createUser
、getUser
方法所使用 - 為了簡潔起見,尚未包含這些方法的程式碼。
-
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.windows.net: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
資料結構所支援的使用者資訊。