如何使用AWS Redis 服務

快取(Caching)是一種強大的工具,工程師可以藉此快速儲存和存取資料。透過快取,工程師能夠擴展資料來源的能力、緩解不可預測的工作負載峰值,並在外部資料來源發生故障時繼續提供數據,從而提升應用程式的可用性。

在分散式快取的常見使用場景中,通常包括:

  • 儲存與檢索高可擴充Web 服務中的使用者會話資料;

  • 在關係型或非關係型資料庫前部署快取層,以加速查詢並避免主資料庫過載。

Redis 是一個開源的NoSQL 資料儲存系統,廣泛被用作分散式快取解決方案,在AWS 大數據與資料庫架構中佔據重要地位。

本文將深入探討Redis 以及如何在AWS 上使用ElastiCache Redis 部署,以便在專案中充分利用分散式快取的低延遲與高效能特性。

 

什麼是Redis?

Redis 是一個開源的記憶體資料結構快取與儲存系統,由Redis 社群持續開發與維護。它被廣泛用作高速記憶體資料庫或應用程式快取。 Redis 的獨特之處在於,它既可以充當緩存,也可以作為資料庫使用。

Redis 將資料集儲存在記憶體中,僅在需要持久化或重新啟動後復原時才寫入磁碟。這種方式使Redis 在讀寫操作中可實現毫秒延遲,並支援多種資料結構、內建複製與叢集功能。

從維運角度來看,Redis 的部署、監控和擴展可能具有一定挑戰性。不過,借助託管服務(如AWS ElastiCache for Redis),可以顯著簡化這些工作。

什麼是Amazon ElastiCache for Redis?

AWS ElastiCache 是支援Redis 與Memcached 的託管快取服務。對於Redis 而言,ElastiCache 提供了一個全託管的平台,方便用戶快速部署、管理與擴展高效能的分散式記憶體資料儲存叢集。

該服務大大減少了機器維護、軟體修補程式、監控、故障復原與備份等維運負擔。 ElastiCache 與原生Redis 的資料結構、API 及客戶端完全相容,因此現有Redis 應用程式無需改動程式碼即可遷移使用。

ElastiCache 支援叢集模式與非叢集模式,可透過自動故障轉移提升高可用性與可靠性,並支援跨可用區部署。透過線上叢集調整功能,使用者可在無停機的情況下按需擴容或縮容。

在安全性方面,ElastiCache 內建VPC 支持,並提供傳輸中與靜態資料加密,同時相容於Redis 的AUTH 認證機制。

如何開始使用Amazon ElastiCache for Redis

 

步驟1:設定AWS 環境

在使用ElastiCache for Redis 之前,需要先準備AWS 環境:

  1. 部署EC2 實例
    該實例將用於運行範例Web 應用。為簡化配置,可將EC2 與ElastiCache 叢集部署在同一VPC。
    詳情可參考AWS 官方文件中的EC2 建立流程。

  2. 複製EC2 公網IPv4 DNS 位址,後續訪問範例應用時會用到。

  3. 配置安全群組規則

    • 允許來自相同安全群組的Redis 預設連接埠(6379)存取;

    • 允許來自任意IP(0.0.0.0/0)的TCP 5000 連接埠訪問,以便從本地電腦存取Web 應用。

 

步驟2:建立AWS ElastiCache Redis 叢集
  1. 打開 ElastiCache 控制台,點選「Get Started Now」。確保選擇的區域(Region)與EC2 實例相同。

  2. 建立新集群,選擇 Redis 作為引擎。如果需要橫向擴展,可啟用 Cluster Mode(支援多達500 個主節點)。

  3. 選擇預設的可用區位置,並為叢集命名(例如 elasticache-redis)。

  4. 選擇實例類型,例如 cache.t2.micro(可免費層使用)。

  5. 可保留預設配置,也可依需求調整引擎版本、多副本與多可用區等選項。

  6. Advanced Settings 中建立新的子網路群組(Subnet Group),確保選擇與EC2 相同的VPC。

  7. Security 在面板中,選擇與EC2 相同的安全群組。

  8. 可關閉自動備份選項(本範例不需要)。

  9. 檢查配置後點擊 Create

  10. 創建完成後,在控制台複製 Primary Endpoint 位址,後續Web 應用程式將使用它連接Redis。

 

步驟3:將Redis 用作Web 應用的會話存儲

Redis 常被用於可擴充Web 應用的會話管理場景,用於儲存與維護使用者會話資料。以下範例顯示如何將Redis 用作Flask 應用的會話儲存。

  1. SSH 連線EC2 實例,執行以下命令安裝依賴:

    sudo yum install git -y
    sudo yum install python3 -y
    sudo pip3 install virtualenv
    git clone https://github.com/aws-samples/amazon-elasticache-samples/
    cd amazon-elasticache-samples/session-store
    virtualenv venv
    source ./venv/bin/activate
    pip3 install -r requirements.txt
  2. 設定環境變數:

    export REDIS_URL="redis://<你的Primary Endpoint>"
    export FLASK_APP=example-4.py
    export SECRET_KEY=some_random_value
  3. 執行Flask 應用:

    flask run -h 0.0.0.0 -p 5000 --reload

    打開瀏覽器訪問 http:// :5000,可看到預設的三個端點://login/logout

    登入後刷新頁面可看到造訪次數增加,若10 秒內未刷新,計數器會重置。
    應用程式在登入時會為使用者產生唯一Redis 鍵來保存會話數據,並設定 TTL(10 秒),到期後自動清除。

 

总结

實施快取方案能顯著提升雲端原生應用的整體效能,並降低存取延遲所帶來的成本與低效率。
使用 AWS ElastiCache for Redis,可同時享受Redis 的速度、簡潔與彈性,並藉助AWS 的託管優勢降低維運負擔。

此外,結合 NetApp Cloud Volumes ONTAP,可在AWS、Azure 和Google Cloud 上取得企業級儲存管理能力,支援高可用性、資料保護、Kubernetes 整合等特性。
對於在雲端中運行的NoSQL 資料庫或大數據分析集群,它還可用於提供持久化的磁碟資料支持,使複雜Redis 集群的儲存管理更加高效。

更多探索

Tell me what you need