開始之前,請確認應用程式不會超出 Memorystore for Redis 配額。
使用記憶體快取的時機
工作階段資料、使用者偏好設定和其他網頁查詢傳回的資料都很適合使用快取。一般來說,如果經常執行的查詢會傳回一組結果,且不需要立即顯示在應用程式中,您就可以快取結果。如此一來,後續要求就可以先查看快取,然後只有在找不到結果、或是暫存的結果因為逾期而消除的情況下,才去查詢資料庫。
如果您只將值儲存在 Memorystore,而不另於永久儲存空間備份;您就必須確保值過期並從快取中移除時,您的應用程式仍可保持正常運作。舉例來說,如果使用者的工作階段會因為資料突然消失,變成運作不良,那麼資料除了存放在 Memorystore,可能也應該儲存在資料庫。
瞭解 Memorystore 權限
與 Google Cloud 服務的每次互動都必須經過授權。舉例來說,如要與 Memorystore 代管的 Redis 資料庫互動,應用程式必須提供有權存取 Memorystore 的帳戶憑證。
根據預設,應用程式會提供 App Engine 預設服務帳戶的憑證,該帳戶已獲授權可存取與應用程式位於相同專案中的資料庫。
如果符合下列任一條件,您必須使用可明確提供憑證的替代驗證技術:
應用程式和 Memorystore 資料庫位於不同的Google Cloud 專案。
您已變更指派給預設 App Engine 服務帳戶的角色。
如要瞭解其他驗證技術,請參閱設定伺服器對伺服器正式版應用程式的驗證作業一文。
使用 Memorystore 總覽
如要在應用程式中使用 Memorystore:
設定 Memorystore for Redis,這需要您在 Memorystore 上建立 Redis 執行個體,並建立應用程式用來與 Redis 執行個體通訊的無伺服器虛擬私有雲存取。建立這兩個獨立實體的順序不拘,可以按照任何順序設定。本指南中的操作說明會先介紹如何設定無伺服器虛擬私有雲存取。
安裝 Redis 用戶端程式庫,並使用 Redis 指令快取資料。
Memorystore for Redis 與所有適用於 Redis 的用戶端程式庫相容。 本指南說明如何使用 Jedis 用戶端程式庫,從應用程式傳送 Redis 指令。如要瞭解如何使用 Jedis,請參閱 Jedis Wiki。
測試更新。
設定 Memorystore for Redis
如要設定 Memorystore for Redis,請按照下列步驟操作:
將 App Engine 連線至虛擬私有雲端網路。您的應用程式只能透過虛擬私有雲連接器與 Memorystore 通訊。
請務必按照「設定應用程式使用連接器」一文所述,將 VPC 連線資訊新增至
app.yaml
檔案。請記下您建立的 Redis 執行個體 IP 位址和通訊埠編號。 您會在程式碼中建立 Redis 用戶端時使用這項資訊。
在 Memorystore 中建立 Redis 執行個體。
系統提示您選取 Redis 執行個體的地區時,請選取與 App Engine 應用程式相同的地區。
安裝依附元件
如要在應用程式於 App Engine 中執行時提供 Jedis 用戶端程式庫,請將程式庫新增至應用程式的依附元件。舉例來說,如果您使用 Maven,請在pom.xml
檔案中新增下列依附元件:
建立 Redis 用戶端
如要與 Redis 資料庫互動,程式碼必須建立 Redis 用戶端,以管理與 Redis 資料庫的連線。以下各節說明如何使用 Jedis 用戶端程式庫建立 Redis 用戶端。
指定環境變數
Jedis 用戶端程式庫會使用兩個環境變數,組裝 Redis 資料庫的網址:
- 用於識別您在 Memorystore 中建立的 Redis 資料庫 IP 位址的變數。
- 用於識別您在 Memorystore 中建立的 Redis 資料庫通訊埠編號的變數。
建議您在應用程式的 app.yaml
檔案中定義這些變數,而不是直接在程式碼中定義。這樣一來,您就能更輕鬆地在不同環境 (例如本機環境和 App Engine) 中執行應用程式。
app.yaml
檔案中新增下列程式碼:
env_variables:
redis.host: '10.112.12.112'
redis.port: '6379'
匯入 Jedis 並建立用戶端
使用 Jedis 程式庫時,建議您建立 JedisPool,然後使用集區建立用戶端。下列程式碼行會使用您先前定義的redis.host
和 redis.port
環境變數建立集區:
如要從集區建立用戶端,請使用 JedisPool.getResource()
方法。
例如:
使用 Redis 指令在快取中儲存及擷取資料
雖然 Memorystore Redis 資料庫支援大部分的 Redis 指令,但您只需要使用幾個指令,就能從快取儲存及擷取資料。下表建議您使用 Redis 指令來快取資料。如要瞭解如何從應用程式呼叫這些指令,請參閱用戶端程式庫的說明文件。
工作 | Redis 指令 |
---|---|
在資料快取中建立項目,並為該項目設定到期時間 |
SETNX MSETNX |
從快取擷取資料 | GET MGET |
取代現有快取值 | SET MSET |
遞增或遞減數值快取值 | INCR INCRBY DECR DECRBY |
從快取中刪除項目 | DEL UNLINK |
支援與快取的並行互動 | 請參閱 Redis 交易的詳細資料。 |
測試更新
在本機測試應用程式時,請考慮執行 Redis 的本機執行個體,以避免與實際工作環境中的資料互動 (Memorystore 不提供模擬器)。如要在本機安裝及執行 Redis,請按照 Redis 說明文件中的指示操作。請注意,目前無法在 Windows 本機上執行 Redis。
部署您的應用程式
應用程式在本機開發伺服器中順利執行後,請按照下列步驟操作:
如果應用程式順利執行,請使用流量分割,逐步增加更新版應用程式的流量。在將更多流量導向更新版應用程式之前,請密切監控應用程式,確認是否有任何資料庫問題。