--- title: GCP MemoryStore # 簡報的名稱 tags: GCP # 簡報的標籤 --- # [MemoryStore](https://cloud.google.com/memorystore/docs/redis/) :::warning 使用於GCP專案內部網路 ::: #### 專注於建構優質應用程式 藉助 Redis 開放原始碼的絕佳優勢,您可以減少進行管理工作的時間,將更多時間投注在程式設計工作上。Cloud Memorystore 可以自動化處理多項複雜的工作,例如啟用高可用性設定、容錯移轉、修補及監控應用程式,讓您有更多時間編寫程式碼。 #### 彈性化的資源調度方式 有了 Cloud Memorystore for Redis,您就能輕鬆將延遲時間維持在 1 毫秒以內,並滿足應用程式的總處理量需求。您可以先從最低級別和最小規模開始,然後輕鬆增加執行個體配置,對應用程式可用性的影響也能維持在最低限度。Cloud Memorystore 支援的執行個體最高可達 **300 GB**,網路總處理量上限則為 **12 Gbps**。 #### 高可用性 高可用性執行個體會在兩個區域之間複製,並提供高達 99.9% 的可用性服務水準協議。系統會持續監控執行個體,並透過自動容錯移轉盡可能避免應用程式發生服務中斷的情況。 #### Google 級安全防護 Cloud Memorystore 執行個體使用的是私人 IP,不會連結至網際網路,因此能夠受到保護。另外,您也可以使用身分與存取權管理來控管不同角色的存取權限,進一步提升安全性。 #### 隨即轉移,易如反掌 Cloud Memorystore for Redis 與 Redis 的通訊協定完全相容。只要使用匯入/匯出功能,您不必修改任何程式碼,也能將開放原始碼 Redis 中的應用程式隨即轉移至 Cloud Memorystore。所有現有工具和用戶端程式庫都能正常運作,因此您無需學習使用新工具。  ## MemoryStore 與 開源 Redis差異 * 開源Redis提供了多種將數據持久保留到磁盤的選項。RDB持久化可以生成數據集的時間點快照,而AOF持久化可以記錄服務器接收的每個寫入操作。**Cloud Memorystore for Redis目前不支持RDB和AOF持久化。** * Cloud Memorystore for Redis實例的大多數參數已預先配置,無法更改。 * 某些命令可能會干擾託管的Redis服務,因此會被屏蔽。 * 標準層級實例不允許從副本讀取。 ## Redis 測試工具 ``` -h <hostname> Server hostname (default 127.0.0.1) -p <port> Server port (default 6379) -s <socket> Server socket (overrides host and port) -a <password> 密碼 -c <clients> 並聯數 (default 50) -n <requests> 請求總數 (default 100000) -d <size> SET / GET值的數據大小 (default 3) --dbnum <db> 選擇指定的數據庫編號 (default 0) -k <boolean> 1 =保持活動狀態0 =重新連接 (default 1) -r <keyspacelen> 對SET / GET / INCR使用隨機鍵,對SADD使用隨機值 使用此選項,基準測試將擴展字符串__rand_int__ 在具有指定範圍內的12位數字的參數中 從0到keyspacelen-1。每次命令替換都會更改 被執行。默認測試使用它來擊中 指定範圍。 -P <numreq> 管道<numreq>請求。 Default 1 (no pipeline). -e 如果服務器回复錯誤,請在標準輸出上顯示 -q 只顯示查詢/秒值 --csv 輸出CSV -l loop迴圈. -t <tests> 僅運行以逗號分隔的測試列表。測試名稱與作為輸出產生的名稱相同。 -I Idle mode. Just open N idle connections and wait. # 1秒鐘 16管道機制 1000000個隨機鍵 2000000次亂數指令 redis-benchmark -h [REDIS_HOST] -p [PORT] -r 1000000 -n 2000000 -t get,set,l push,lpop -P 16 -q redis-benchmark -h 10.98.22.188 -p 6379 -r 1000000 -n 2000000 -t get,set,lpush,lpop -P 16 -q ``` ## MemoryStore 的詳細資料 ``` gcloud redis instances describe [INSTANCE_ID] --region=[REGION] ``` * `currentLocationId` 主要節點位置 * `locationId` 與 `alternativeLocationId` 會相互轉換 ## MemoryStore 調整儲存大小 :::danger 對基本層級實例進行擴縮會清空緩存 ::: ## 容錯轉移 ## MemoryStore 的手動容錯移轉 ``` gcloud redis instances failover [INSTANCE_ID] --data-protection-mode=force-data-loss --region=[REGION] ``` * `force-data-loss` 最能呈現災難式演練 * `limited-data-loss` 主副節點的最低容錯演練 ### 容錯轉移範例 ``` redis-benchmark -h 10.83.46.188 -p 6379 -r 1000000 -n 2000000 -t get,set,lpush,lpop -P 16 -q DBSIZE //864497 ``` ``` DBSIZE //864497 gcloud redis instances describe redis-funk --region=asia-east1 gcloud redis instances failover redis-funk --data-protection-mode=limited-data-loss --region=asia-east1 停一分鐘 DBSIZE //864497 ```  ``` sudo apt-get update && apt-get install telnet ``` ``` gcloud redis instances failover redis-funk-2 --data-protection-mode=limited-data-loss --region=asia-east1 ``` ### 複製檔案進入vm ``` scp -i ~/.ssh/id_rsa local-file-path username@ip-address:~ ``` ## [Storage](https://cloud.google.com/storage/docs) Cloud Storage 在世界各地提供具備擴充性的耐用物件儲存空間,能夠儲存 EB 規模的資料。您可以立即從任一儲存空間級別存取資料、利用單一整合式 API 將儲存空間整合至您的應用程式,以及輕鬆地進行價格/效能最佳化。 * 分析和機器學習整合式存放區 * 媒體內容儲存與傳遞 * 備份與封存 ### 儲存位置(地區)類別 主要影響就是為了法規去控制儲存空間 * Region - 可在單一地區中提供最低延遲 * Multi-region - 可用性最高,涵蓋範圍最大 * Dual-region - 可在 2 個地區中提供高可用性和低延遲 ### 儲存位置(地區)類別 | API 和gsutil 的名稱 | 最短存儲時長 | 典型的每月可用性 | 價位 | |:------------------- | ------------ | ---------- | --- | | STANDARD | 無 | 多區域和雙區域位置高於99.99% / 各區域99.99% | 最貴 | | NEARLINE | 30 天 | 多區域和雙區域位置達99.95% / 各區域達99.9% | 次貴 | | COLDLINE | 90 天 | 多區域和雙區域位置達99.95% / 各區域達99.9% | 次便宜 | | ARCHIVE | 365 天 | 多區域和雙區域位置達99.95% / 各區域達99.9% | 最便宜 | ### [gsutil tools](https://cloud.google.com/storage/docs/gsutil) 創建一個 Storage ``` gsutil md -l asia -c standard gs://<bucket-name> ``` 遷移物件 ``` gsutil cp <~/local/path-to-file> gs://<bucket-name>/path ``` > 路徑相反就是下載下檔案 磁曲版控 ``` gsutil versioning set on gs://<bucket-name> // 設置磁區版控啟用 gsutil versioning set off gs://<bucket-name> // 設置磁區版控停用 gsutil versioning get gs://<bucket-name> // 檢查磁區是否版控 ``` 靜態頁面訪問 ``` gsutil web set -m index.html -e 404.html gs://<bucket-name> // 頁面設定 gsutil web get gs://<bucket-name> // 頁面設定JSON ```
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.