跳至主要內容
ESC
GCP 核心服務 — 第 10/10 篇

GCP-115:Cloud Memorystore 入門——全託管記憶體資料庫完全指南

GCP-115:Cloud Memorystore 入門——全託管記憶體資料庫完全指南
Updated: 2026-07-19

前言

使用者一按下去就要立刻有反應的東西——購物車、登入狀態、遊戲排行榜——你拿硬碟資料庫去扛,延遲會很有感。這種微秒級延遲(百萬分之一秒等級)的存取,就是記憶體資料庫的主場。Cloud Memorystore 是 GCP 的全託管記憶體資料庫服務,支援 Redis、Valkey 和 Memcached 三種引擎。

這篇是 GCP 入門系列第 15 課,帶你搞懂 Memorystore 到底是什麼、三個引擎差在哪、新專案該選哪個。看完你會知道考試怎麼考你、實作上哪幾個坑一定要先閃過。


什麼是 Cloud Memorystore?

先補一點背景,免得後面看得霧煞煞。快取(cache) 講白話就是「把常用的資料先放在拿得快的地方」,這樣下次要用就不必每次都跑去翻很慢的硬碟資料庫。讀到快取裡有要的東西叫快取命中(cache hit),沒有、得回頭去查資料庫叫快取未命中(cache miss)。Memorystore 扮演的就是這個「拿得快的地方」。

Memorystore 是 GCP 的全託管記憶體資料庫,資料放在記憶體(RAM)裡而不是硬碟,所以讀寫延遲超低:

應用程式

    ├── 快取命中 → Memorystore(微秒級回應)

    └── 快取未命中 → Cloud SQL / Firestore(毫秒級回應)

                         └── 寫回 Memorystore(下次命中)

四個產品

產品說明狀態
Memorystore for Redis獨立 Redis 實例(Basic/Standard)GA
Memorystore for Redis Cluster分片式 Redis 叢集GA
Memorystore for Valkey基於 Valkey(Redis 開源分支)GA,推薦新專案使用
Memorystore for Memcached託管 Memcached已棄用(2029/1/31 停止服務)

Valkey 是 Redis 在 2024 年改授權之後,由 Linux Foundation 主導的開源分支(BSD 3-Clause),協議跟 Redis 完全相容。Google、AWS、Oracle 等都有一起支持。

Memorystore Console 頂部四個產品分頁:Valkey、Redis 叢集、Redis、Memcached;下方橫幅推廣「Memorystore for Valkey 9.0 is now available(新推出)」,說明為 100% 開源、與 Redis OSS 完全相容的全託管 key-value 服務,並有「建立 Valkey 執行個體」按鈕
Memorystore 底下這四個分頁——Valkey、Redis 叢集、Redis、Memcached——就是上面那張四個產品表。注意 Console 自己都跳出橫幅主推 Valkey 9.0(100% 開源、跟 Redis OSS 完全相容),正好呼應「新專案直接選 Valkey」的建議;Memcached 雖然還在分頁上,但已經在倒數退場了。

Memorystore for Redis(獨立實例)

Basic vs Standard Tier

特性Basic TierStandard Tier
高可用無(單節點)跨可用區(zone)複製 + 自動故障轉移
SLA99.9%
讀取副本最多 5 個
最大容量300 GB300 GB
RDB 快照支援支援(從副本執行,不影響主節點)
適合場景開發測試、可容忍冷啟動正式環境

💡 重點提點

Basic 和 Standard 不能互相升級,要換層級就得砍掉重建一台新的。所以建一台正式環境的快取,第一步就把 Standard 選好——別想說「先開 Basic 省錢、之後再升」,到時候你會發現升不了,只能停機搬資料。考試也愛戳這個點:問你「線上服務要高可用、可不可以從 Basic 升到 Standard」,答案是不行,要重建。

Memorystore for Redis 建立執行個體表單的「選取級別」區塊,選項為基本(費用較低但可用性不高)與標準(已選,支援自動容錯移轉、高可用、最多 5 項唯讀備用資源);下方容量欄位為 16 GB,說明最多可佈建 300 GB
建 Redis 實例第一個要定的就是級別基本是單節點、無 SLA,只適合開發測試;標準才有跨可用區複製、自動容錯移轉跟 99.9% SLA。這正是上面提點框在講的坑——兩者不能互相升級,正式環境第一步就得選標準,別想著先開基本省錢之後再升,到時只能停機重建。下面容量最多也就到 300 GB,要更大得改用 Valkey 叢集。

容量等級

等級容量範圍網路吞吐
M11-4 GB10 Gbps
M25-10 GB10 Gbps
M311-35 GB10 Gbps
M436-100 GB16 Gbps
M5101-300 GB16 Gbps

建立與連接

# 建立 Standard Tier Redis 實例
gcloud redis instances create my-cache \
  --size=5 \
  --region=asia-east1 \
  --tier=standard \
  --redis-version=redis_7_2

# 查看實例資訊(含 Host/Port)
gcloud redis instances describe my-cache --region=asia-east1

# 從 VM 連接
redis-cli -h INSTANCE_HOST -p 6379

RDB 快照(備份)

RDB(Redis Database Backup)快照就是把當下記憶體裡的整份資料「拍一張照」存起來,之後可以拿這張照片把資料還原回去——重啟或誤刪時的救命稻草。

# 快照間隔:1h / 6h / 12h / 24h
# 一般建議 maxmemory-gb 抓容量的 8 成左右,留點空間給快照 fork 用

# 匯出到 Cloud Storage
gcloud redis instances export gs://my-bucket/backup.rdb \
  my-cache --region=asia-east1

# 從 Cloud Storage 匯入(會中斷服務)
gcloud redis instances import gs://my-bucket/backup.rdb \
  my-cache --region=asia-east1

Memorystore for Valkey(推薦新專案)

新專案 Google 現在第一推薦的就是 Valkey,效能比舊的 Redis Cluster 還好:

核心優勢

  • Valkey(2024 年以 8.0 首發,現行 GA 版本已是 9.0):在微秒級延遲下,每秒查詢數(QPS)最高可達 Memorystore for Redis Cluster 的 2 倍
  • 支援叢集模式非叢集模式
  • 每個分片(shard,把資料切成好幾塊、分散到不同節點存的單位):1 個主節點 + 最多 5 個副本
  • 最大 250 個分片,總容量可達數十 TB 級(實際看你挑哪種節點型別)
  • 零停機擴縮:水平增減分片不中斷服務
  • 跨區域複製(GA)
  • 向量搜尋(vector search,用「語意相似度」找資料,而不是精準比對關鍵字):內建支援,常用在 GenAI / RAG 這類應用

節點類型

以下列的是幾種常用型別(官方實際提供更多種,上面還有更大的,例如 highmem-2xlarge):

節點類型vCPU可寫容量SLA
shared-core-nano0.51.12 GB
standard-small25.2 GB
highmem-medium210.4 GB
highmem-xlarge846.4 GB

SLA

  • 99.99%:多區域部署 + 副本
  • 99.9%:單區域 + 副本
  • 無 SLA:shared-core-nano 或無副本

相容性

協議跟 Redis 完全相容,手上現有的 Redis 客戶端(Jedis、redis-py、ioredis 等)不用改就能直接接上。


Memorystore for Memcached(已棄用)

時間點事件
2026/1/20不再推薦使用
2027/2/1新專案無法建立實例
2029/1/31完全停止服務

Memcached 跟 Redis/Valkey 差最多的地方:

  • 無持久化:純快取,重啟資料全沒,救不回來
  • 無複製、無故障轉移(failover,主節點掛了自動換副本頂上的機制):主節點一倒,這段快取就斷了
  • 僅支援簡單 Key-Value:沒有 List、Set、Sorted Set(會自動依分數排序的集合)這些資料結構

Google 建議遷移至 Memorystore for Valkey。


網路架構

Memorystore 底下的產品全都沒有公開 IP,只能走 VPC(Virtual Private Cloud,你在 GCP 裡的私有網路)連進去:

💡 重點提點

這是新手第一次接 Memorystore 最常卡的地方,也是 ACE 高頻考點:Memorystore 只有私有 IP,你的筆電、公網都連不進去。同一個 VPC 裡的 Compute Engine、GKE 可以直接連;但 Cloud Run、Cloud Functions 這些 Serverless 服務天生在 VPC 外面,一定要先設一條 VPC 連接器(Serverless VPC Access Connector)或開 Direct VPC Egress 才連得到。實作時看到 Cloud Run 連 Redis 一直 timeout,十之八九就是這條沒接。

┌─────────────────────────────────────────┐
│ VPC Network                             │
│                                         │
│  Compute Engine ──→ Memorystore (私有IP) │
│  GKE Pod ────────→ Memorystore (私有IP) │
│                                         │
│  Cloud Run ──→ VPC Connector ──→ Memorystore │
│  Cloud Functions → VPC Connector → Memorystore │
│  App Engine ───→ VPC Connector ──→ Memorystore │
└─────────────────────────────────────────┘
服務連接方式
Compute Engine直接透過 VPC(同一網路)
GKEVPC-native 叢集直接連接
Cloud RunServerless VPC Access Connector 或 Direct VPC Egress
Cloud FunctionsServerless VPC Access Connector
App Engine StandardServerless VPC Access Connector
App Engine Flex直接透過 VPC

常見使用場景

1. Session 快取

import redis

r = redis.Redis(host='MEMORYSTORE_HOST', port=6379)

# 儲存 Session(30 分鐘過期)
r.setex(f"session:{session_id}", 1800, session_data)

# 讀取 Session
session = r.get(f"session:{session_id}")

2. 資料庫查詢快取

def get_user(user_id):
    # 先查快取
    cached = r.get(f"user:{user_id}")
    if cached:
        return json.loads(cached)

    # 快取未命中,查資料庫
    user = db.query("SELECT * FROM users WHERE id = %s", (user_id,))

    # 寫入快取(5 分鐘過期)
    r.setex(f"user:{user_id}", 300, json.dumps(user))
    return user

3. 遊戲排行榜

# 使用 Redis Sorted Set
r.zadd("leaderboard", {"player_a": 1500, "player_b": 2300})

# 取得前 10 名
top_10 = r.zrevrange("leaderboard", 0, 9, withscores=True)

4. API 速率限制

def check_rate_limit(api_key, limit=100, window=60):
    key = f"rate:{api_key}"
    current = r.incr(key)
    if current == 1:
        r.expire(key, window)
    return current <= limit

Redis vs Valkey vs Memcached 選型

特性Redis(獨立)Valkey(叢集)Memcached
資料結構String、List、Set、Hash、Stream 等同左僅 Key-Value
持久化RDB 快照RDB + AOF
高可用Standard Tier 99.9%99.99%(多區域)
最大容量300 GB數十 TB 級依節點數擴展
Pub/Sub支援支援不支援
向量搜尋不支援支援不支援
狀態GAGA(推薦)已棄用

Pub/Sub(Publish/Subscribe,發布/訂閱)是 Redis 內建的訊息廣播機制:發送方丟一則訊息,所有訂閱該頻道的接收方都會即時收到,常拿來做即時通知、聊天室。(注意這跟 GCP 那個獨立的 Cloud Pub/Sub 服務不是同一個東西,只是名字一樣。)AOF(Append Only File)則是另一種持久化方式,把每一筆寫入指令逐筆記下來,比 RDB 快照更不容易掉資料。

選型公式

新專案需要記憶體快取?
  → Memorystore for Valkey ✅(Google 推薦)

既有 Redis 應用、不想改架構?
  → Memorystore for Redis ✅

需要 >300 GB 或 99.99% SLA?
  → Memorystore for Valkey(叢集模式)✅

僅需簡單 Key-Value 快取、不需持久化?
  → 仍建議 Valkey ✅(Memcached 已棄用)

GenAI 向量搜尋?
  → Memorystore for Valkey ✅(內建向量搜尋)

定價

Redis 獨立實例(us-central1 參考)

等級Basic Tier(每 GiB/hr)Standard Tier(每 GiB/hr)
M1(1-4 GB)~$0.049~$0.064
M2(5-10 GB)~$0.027~$0.046
M3(11-35 GB)低於 M2~$0.046

Standard Tier 大概比 Basic Tier 貴 30-50%,畢竟多了複製和 HA 的開銷。

Valkey / Redis Cluster(us-central1 參考)

節點類型每節點每小時
shared-core-nano~$0.037
highmem-medium~$0.192
highmem-xlarge~$0.994

範例:5 分片 × 1 副本 × highmem-medium = 10 節點 × $0.192 = $1.92 / 小時(~$1,383 / 月)

成本優化

  • 承諾使用折扣(CUD,Committed Use Discounts):先承諾用 1 年或 3 年,換取比隨用隨付更低的價格——承諾越久折扣越多,實際百分比依產品和時間調整,要省錢前先去官方定價頁查當下的數字
  • 沒有免費層;不過新帳號有 GCP 註冊後的免費試用額度可以拿來練手(額度與適用範圍以官方為準)

效能調校建議

  1. 記憶體使用率 < 70%——超過會影響延遲
  2. maxmemory-gb 設為容量的 80%——預留快照 fork 開銷
  3. 使用 I/O Thread——M3 以上搭配 Redis 6.x+ 自動啟用
  4. 選擇同區域的 VPC——減少網路跳數
  5. 使用 Pipeline / Batch——Pipeline(管線)就是把一堆指令打包成一次送出、不必每條都來回確認,減少 Round-Trip(往返)次數,延遲會明顯下降

ACE 考試重點整理

必背知識點

  1. Memorystore 是全託管記憶體資料庫,支援 Redis、Valkey、Memcached
  2. Valkey 是 Redis 開源分支(Linux Foundation),Google 推薦新專案使用
  3. Basic Tier 無 SLA,Standard Tier 99.9%,Valkey 多區域 99.99%
  4. 只有私有 IP——Cloud Run / Cloud Functions 需要 VPC Connector
  5. Memcached 已棄用(2029/1/31 停止服務)
  6. Basic 和 Standard 無法互相升級,必須重建
  7. RDB 快照匯入會中斷服務

常見陷阱題

Q:Web App 需要毫秒以下的 Session 快取,選什麼? A:看到「毫秒以下」「Session 快取」這種字眼,這題十之八九就是要你選 Memorystore(for Redis 或 Valkey)。記憶體資料庫才給得起微秒級延遲,硬碟資料庫不可能。

Q:Memorystore 實例可以從公開網路存取嗎? A:不行。這題年年都考——Memorystore 只有私有 IP,一定要透過 VPC 存取。題目要是把場景設成 Cloud Run / Cloud Functions 連 Memorystore,答案就往「要設 VPC Connector」那個選項去靠。

Q:需要 >300 GB 的記憶體快取並且要 99.99% SLA,選什麼? A:Memorystore for Valkey(叢集模式)。獨立 Redis 卡在 300 GB,要再大、又要多區域 99.99% SLA,就只剩 Valkey 叢集這條路(最大 250 分片,總容量可達數十 TB 級)。

Q:Redis 和 Memcached 有什麼差別? A:Redis/Valkey 支援豐富資料結構(List、Set、Hash 等)和持久化。Memcached 只支援簡單 Key-Value 且無持久化。Google 已棄用 Memcached,建議用 Valkey。

Q:什麼是 Valkey? A:Redis 在 2024 年更改授權後的開源分支,由 Linux Foundation 主導,與 Redis 完全協議相容。


總結

說到底,Memorystore 就是 GCP 幫你顧好的「拿得快的地方」——需要微秒級延遲的快取(Session、排行榜、速率限制)就找它,新專案直接選 Valkey 準沒錯,Memcached 已經在倒數計時別碰了。考試要記牢的就一句:只有私有 IP,Serverless 一定要 VPC Connector,這一條比什麼容量數字都常考。至於選型,記住三條路就好:要快取找 Memorystore、要持久化的 NoSQL 找 Firestore、要 SQL 找 Cloud SQL。

下一課 ACE-216:混合雲連線深度解析,來看企業混合架構會用到的核心網路技術。

GCP 核心服務 — 10/10 完成 查看系列全覽 →

留言討論

徽章解鎖!