為專案加上 Redis 快取
在 Google Memorystore 建立私有 Redis 快取(S 到 XL,可選高可用與 TLS),從主控台或 AI 工具以 REDIS_URL 連上專案。
最快的做法:讓部署幫你建立#
程式讀取 REDIS_URL(或其他 Redis 連線變數),而專案還沒有替它設定值時,從 AI 工具部署或在主控台上傳,都會在建置開始前建立一個大小 S、一般版的快取並連上,大約要 5 分鐘。什麼時候會建立、什麼時候不會,見程式需要的資料庫和快取。
你會得到什麼#
Google Memorystore 上一個獨立的 Redis 7.2 執行個體,位在台灣(asia-east1),屬於一個環境。
| 設定 | 選項 |
|---|---|
| 記憶體 | S 1 GiB、M 2 GiB、L 4 GiB、XL 8 GiB。之後可以加大,不能縮小。 |
| 可用性 | 一般版,或有備援節點可以接手的 高可用版。建立後不能更改。 |
| TLS 加密 | 預設關閉。建立後不能更改。打開 TLS 時,專案還需要 CA 憑證。 |
| 資料淘汰策略 | 記憶體滿了怎麼辦:noeviction、allkeys-lru、allkeys-lfu、allkeys-random、volatile-lru、volatile-lfu、volatile-random 或 volatile-ttl。之後可以更改。 |
- 私有。快取只有私有位址。只有你連上的專案碰得到它,而且要有 AUTH 密碼,AUTH 一律開啟。從你自己的電腦連不到;要從 AI 工具操作,
caches_command可以替你執行單一指令。 - 方案數量。Free 沒有快取。Pro 可以有 5 個,Team 20 個,Business 依合約,四種大小都能選。
- 價格。快取的價格還沒公布:主控台不顯示估價,
caches_options也不回傳價格。高可用版比一般版貴。
建立快取#
- 開啟 快取,按 建立快取。
- 填 名稱:小寫英文字母、數字和連字號,英文字母開頭,最多 63 個字元。
- 選擇 記憶體、可用性、TLS 加密 和 資料淘汰策略。存登入狀態或不能遺失的資料,用
noeviction;純粹當快取,用allkeys-lru。 - 確認。大約 5 分鐘後就能用。
建立一個 Agent Lab Redis 快取,名稱 sessions,大小 S,一般版,不開 TLS,淘汰策略 noeviction。助理會呼叫 caches_create,先給你看預覽,你同意後才建立。
連上專案#
連上之後,連線資訊會寫進專案的隱藏值,專案也會被放行通過快取的網路。沒有人看得到密碼。
- 開啟快取,到 專案連線,按 綁定專案。
- 選專案和變數名稱,按 預覽 ENV 變更。預覽會列出會被取代的變數。
- 確認,並保持 注入後重新啟動專案 勾選,專案才會讀到新的值。
把 orders-api 專案連到 sessions 快取,變數名稱用 REDIS_URL。助理會先呼叫 caches_binding_preview,再帶預覽回傳的 token 呼叫 caches_binding_connect。names 指定每個變數對應連線的哪一部分:
{ "REDIS_URL": "url", "REDIS_CA": "ca" }可用的部分有 url、host、port、password 和 ca。開了 TLS 的快取一定要有 ca。
url 的格式是 redis://:<password>@<私有位址>:6379/0;開了 TLS 時以 rediss:// 開頭,通訊埠是 Memorystore 給 TLS 快取的 6378。大多數用戶端直接拿來用即可。開了 TLS 的話,也要把 CA 憑證交給用戶端:
import { createClient } from "redis";
const redis = createClient({
url: process.env.REDIS_URL,
socket: process.env.REDIS_CA ? { tls: true, ca: process.env.REDIS_CA } : undefined,
});
await redis.connect();快取要是 可使用 狀態,專案才能連上。解除綁定會移除專案的存取權;網路權限撤銷後,憑證也會一併移除。
修改或刪除快取#
- 在 管理 可以改名、加大記憶體或更改資料淘汰策略,也可以用
caches_update。TLS 和可用性不能改,請另外建立新的快取。 - 刪除快取會永久刪除所有的鍵。專案連線會先被撤銷。
- 快取的 監控 會顯示記憶體、連線、指令、命中率和被淘汰的鍵。只要有鍵被淘汰,就代表快取滿了,改用更大的大小會有幫助。
從 AI 工具操作時,caches_update 和 caches_delete 需要 caches_get 回傳的目前 generation。caches_command 只執行允許清單裡的單一 Redis 指令:讀取直接執行,寫入要你確認。AUTH、CONFIG、EVAL、FLUSH 和 KEYS 都會被拒絕。見 MCP 工具 › Redis(快取)。