

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# ElastiCache 的運作方式
<a name="WhatIs.corecomponents"></a>

您可以在此找到 ElastiCache 部署主要元件的概觀。

## 快取和快取引擎
<a name="WhatIs.corecomponents.cache"></a>

快取是記憶體內資料存放區，可用來存放快取的資料。一般而言，您的應用程式會在快取中快取經常存取的資料，以最佳化回應時間。ElastiCache 提供兩種部署選項：無伺服器快取和節點型叢集。請參閱 [選擇部署選項](WhatIs.deployment.md)。

**注意**  
Amazon ElastiCache 可與 Valkey、Memcached 和 Redis OSS 引擎搭配使用。如果您不確定要使用哪個引擎，請參閱本指南中的[比較節點型 Valkey、Memcached 和 Redis OSS 叢集](SelectEngine.md)。

**Topics**
+ [ElastiCache 的運作方式](#WhatIs.HowELCworks)
+ [定價維度](#WhatIs.ELCpricing)
+ [ElastiCache 備份](#WhatIs.corecomponents.backups-redis)

### ElastiCache 的運作方式
<a name="WhatIs.HowELCworks"></a>

**ElastiCache Serverless**

ElastiCache Serverless 可讓您在建立快取時，不必擔心容量規劃、硬體管理或叢集設計的問題。您只需提供快取的名稱，就會收到單一端點，您可以在 Valkey、Memcached、Redis OSS 用戶端中設定該端點，以開始存取快取。

**注意**  
ElastiCache Serverless 會以叢集模式執行 Valkey、Memcached 或 Redis OSS，且僅與支援 TLS 的用戶端相容。

**主要優點**


+ **無需規劃容量：**ElastiCache Serverless 讓您無需規劃容量。ElastiCache Serverless 會持續監控快取的記憶體、運算和網路頻寬使用率，並可垂直和水平擴展。它可一邊讓快取節點的大小增加，同時一邊啟動橫向擴展操作，以確保快取隨時可因應您應用程式的需求擴展。
+ **按使用付費：**使用 ElastiCache Serverless 時，您只需支付工作負載在快取上儲存的資料和使用的運算費用。請參閱 [定價維度](#WhatIs.ELCpricing)。
+ **高可用性：**ElastiCache Serverless 會自動將您的資料複寫到多個可用區域 (AZ) 以實現高可用性。它會自動監控底層快取節點，並且在發生故障時進行替換。它為每個快取提供 99.99% 可用性 SLA。
+ **自動軟體升級：**ElastiCache Serverless 會自動將快取升級到最新的次要和修補程式軟體版本，而不會對應用程式造成任何可用性影響。當新的主要版本可用時，ElastiCache 會傳送通知給您。
+ **安全性：**Serverless 一律會加密傳輸中的資料和靜態資料。您可以使用服務受管金鑰或使用您自己的客戶受管金鑰來加密靜態資料。

下圖說明 ElastiCache Serverless 的運作方式。

![\[圖中顯示 ElastiCache Serverless 快取操作，從可用區域到客戶 VPC，再到服務 VPC。\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/ELC-serverless-works1.png)


當您建立新的無伺服器快取時，ElastiCache 會在 VPC 中您選擇的子網路中建立虛擬私有雲端 (VPC) 端點。您的應用程式可透過這些 VPC 端點連線到快取。

使用 ElastiCache Serverless 時，您會收到應用程式所連線的單一 DNS 端點。當您請求新的端點連線時，ElastiCache Serverless 會透過代理層處理所有快取連線。代理層有助於減少複雜的用戶端組態，因為在基礎叢集發生變更時，用戶端不需要重新探索叢集拓撲。代理層是一組代理節點，可使用 Network Load Balancer 處理連線。

當您的應用程式建立新的快取連線時，Network Load Balancer 會將請求傳送至代理節點。當您的應用程式執行快取命令時，連線至應用程式的代理節點會在快取中的快取節點上執行請求。代理層會從用戶端抽象叢集拓撲和節點。這可讓 ElastiCache 聰明地進行負載平衡、橫向擴展和新增快取節點、在快取節點發生故障時進行更換，以及更新快取節點上的軟體，這些全都不會影響應用程式的可用性，也不必重設連線。

**節點型叢集**

您可以為叢集選擇快取節點系列、大小和節點數量，來建立節點型 ElastiCache 叢集。建立節點型叢集可讓您更精細地控制，並可讓您選擇快取中的碎片數量，以及每個碎片中的節點數量 （主要和複本）。您可以選擇在叢集模式下操作 Valkey 或 Redis OSS，方法是建立具有多個碎片的叢集，或使用單一碎片的非叢集模式。

**主要優點**
+ **建立節點型叢集：**使用 ElastiCache，您可以建立節點型叢集，然後選擇要放置快取節點的位置。例如，如果您希望犧牲應用程式的高可用性來換取低延遲，可以選擇在單一 AZ 中部署快取節點。或者，您可以建立節點型叢集，其節點橫跨多個AZs，以達到高可用性。
+ **精細控制：**建立節點型叢集時，您可以更好地控制微調快取上的設定。例如，您可以使用 [Valkey 和 Redis OSS 參數](ParameterGroups.Engine.md#ParameterGroups.Redis)或 [Memcached 專用參數](ParameterGroups.Engine.md#ParameterGroups.Memcached) 來設定快取引擎。
+ **垂直和水平擴展：**您可以選擇在需要時增加或減少快取節點大小來手動擴展叢集。您也可以透過新增碎片或新增更多複本至碎片來進行水平擴展。您也可以使用自動擴展功能，根據排程或根據快取上的 CPU 和記憶體用量等指標來設定擴展。

下圖說明節點型 ElastiCache 叢集的運作方式。

![\[ElastiCache 節點型叢集操作的圖表，從可用區域到客戶 VPC，再到 ElastiCache 受管快取節點。\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/ELC-serverless-works2.png)


### 定價維度
<a name="WhatIs.ELCpricing"></a>

您有兩個部署選項可部署 ElastiCache。部署 ElastiCache Serverless 時，您需要支付以 GB 小時數為單位儲存的資料使用費用，以及以 ElastiCache 處理單元 (ECPU) 為單位的運算費用。建立節點型叢集時，您需要支付每小時快取節點用量的費用。請參閱[此處](https://aws.amazon.com/elasticache/pricing/)的定價詳細資訊。

**資料儲存**

您需要支付儲存在 ElastiCache Serverless 中的資料費用，以 GB 小時數為單位計費。ElastiCache Serverless 會持續監控儲存在快取中的資料、每分鐘多次取樣，並計算每小時平均值，以判斷快取的資料儲存用量 (以 GB 小時數為單位)。每個 ElastiCache Serverless 快取的儲存資料最低計量單位為 1 GB。

**ElastiCache 處理單元 (ECPU)**

您需要針對應用程式在 ElastiCache Serverless 上執行的請求，以 ElastiCache 處理單元 (ECPU) 為單位付費，此單元同時包括 vCPU 時間和傳輸的資料。
+ 簡單的讀取和寫入傳輸的每 KB 資料需要 1 個 ECPU。例如，最多傳輸 1 KB 資料的 GET 命令會消耗 1 個 ECPU。傳輸 3.2 KB 資料的 SET 請求將會消耗 3.2 個 ECPU。
+ 透過 Valkey 和 Redis OSS，根據兩個維度中的較高者，消耗更多 vCPU 時間和傳輸更多資料的命令會消耗 ECPUs。例如，如果您的應用程式使用 HMGET 命令，消耗的 vCPU 時間為簡單 SET/GET 命令的 3 倍，且傳輸 3.2 KB 的資料，則會消耗 3.2 個 ECPU。或者，如果它只傳輸 2 KB 資料，則會消耗 3 個 ECPU。
+ 使用 Valkey 和 Redis OSS，需要額外 vCPU 時間的命令將按比例消耗更多 ECPUs。例如，如果您的應用程式使用 Valkey 或 Redis OSS [HMGET 命令](https://valkey.io/commands/hmget/)，並使用 3 倍的 vCPU 時間做為簡單的 SET/GET 命令，則會使用 3 個 ECPUs。
+ 使用 Memcached，在多個項目上操作的命令將按比例消耗更多 ECPUs。例如，如果您的應用程式在 3 個項目上執行 multiget，則會消耗 3 個 ECPU。
+ 使用 Memcached 時，在更多項目上操作並傳輸更多資料的命令會使用兩個維度中較高的 ECPUs。例如，如果您的應用程式使用 GET 命令、擷取 3 項目，以及傳輸 3.2 KB 資料，則會消耗 3.2 個 ECPU。或者，如果它只傳輸 2 KB 資料，則會消耗 3 個 ECPU。

ElastiCache Serverless 會發出稱為 `ElastiCacheProcessingUnits` 的新指標，有助於了解您的工作負載所消耗的 ECPU。

**節點小時數**

您可以選擇 EC2 節點系列、大小、節點數量，以及跨可用區域的置放，以建立節點型叢集。建立節點型叢集時，您需要為每個快取節點支付每小時費用。

### ElastiCache 備份
<a name="WhatIs.corecomponents.backups-redis"></a>

*備份*是無伺服器快取的point-in-time副本，或以 Valkey 或 Redis OSS 節點為基礎的叢集。ElastiCache 可讓您隨時製作資料的備份，或設定自動備份。備份可用來還原現有的快取或植入新快取。備份包含快取中的所有資料加上一些中繼資料。如需更多資訊，請參閱[快照和還原](backups.md)。

# 選擇部署選項
<a name="WhatIs.deployment"></a>

Amazon ElastiCache 提供 2 個部署選項：
+ 無伺服器快取
+ 節點型叢集

如需兩者支援的命令清單，請參閱 [支援和限制的 Valkey、Memcached 和 Redis OSS 命令](SupportedCommands.md)。

**無伺服器快取**

Amazon ElastiCache Serverless 可簡化快取建立，並立即擴展以支援客戶要求最嚴苛的應用程式。使用 ElastiCache Serverless，您可以在一分鐘內建立高可用性和可擴展的快取，無需佈建、規劃和管理叢集容量。ElastiCache Serverless 會自動以備援方式將資料儲存在三個可用區域之間，並提供 99.99% 可用性服務水準協議 (SLA)。從 Valkey 或 Redis OSS 節點型叢集的備份可以還原為無伺服器組態。

**節點型叢集**

如果您需要精細控制 Valkey、Memcached 或 Redis OSS 叢集，您可以使用 ElastiCache 建立節點型叢集。您可以選擇叢集跨AWS可用區域的節點類型、節點數量和節點放置。由於 ElastiCache 是全受管服務，它有助於管理叢集的硬體佈建、監控、節點替換和軟體修補。節點型叢集的設計可提供高達 99.99% 的可用性 SLA。來自無伺服器 Valkey 或 Redis OSS 快取的備份可以還原至節點型叢集。

**選擇部署選項**

下列情況請選擇無伺服器快取：
+ 您正在為新工作負載或難以預測的工作負載建立快取。
+ 您有無法預測的應用程式流量。
+ 您希望以最簡單的方式開始使用快取。

建立您自己的節點型叢集，如果：
+ 您已經在執行 ElastiCache Serverless，並且想要更精細地控制執行 Valkey、Memcached 或 Redis OSS 的節點類型、節點數量，以及這些節點的位置。
+ 您預期應用程式流量相對可預測，而且想要精細控制效能、可用性和成本。
+ 您可以預測容量需求以控制成本。

## 比較無伺服器快取和節點型叢集
<a name="WhatIs.deployment.comparing"></a>


| 功能 | 無伺服器快取 | 節點型叢集 | 
| --- | --- | --- | 
|  快取設定  |  在一分鐘內僅建立名稱的快取  |  提供對叢集設計的精細控制。使用者可以選擇節點類型、節點數量，以及跨AWS可用區域的置放  | 
|  支援的 ElastiCache 版本  |  Valkey 7.2 及更高版本、Redis OSS 7.1 及更高版本、Memcached 1.6.21 及更高版本  |  Valkey 7.2 及更高版本、Redis OSS 4.0 及更高版本、Memcached 1.4 及更高版本  | 
|  叢集模式 (Valkey 和 Redis OSS)  |  `cluster mode enabled` 僅在 中操作引擎。用戶端必須支援 `cluster mode enabled` 才能連線至 ElastiCache Serverless。  |  可以設定為在啟用叢集模式或停用叢集模式的情況下操作。  | 
|  擴展  |  自動垂直和水平擴展引擎，無需任何容量管理。  |  提供對擴展的控制，同時還需要監控以確保目前的容量足以滿足需求。 對於 Valkey 和 Redis OSS，您可以選擇視需要增加或減少快取節點大小，以垂直擴展。您也可以透過新增碎片或將更多複本新增至碎片來水平擴展。此功能不適用於 Memcached。 使用自動擴展功能，您也可以根據排程設定擴展，或根據快取上的 CPU 和記憶體用量等指標進行擴展。  | 
|  用戶端連線  |  用戶端連接到單一端點。這可讓基礎快取節點拓撲 （擴展、取代和升級） 在不中斷用戶端連線的情況下進行變更。  |  用戶端連接到每個個別快取節點。如果替換節點，用戶端會重新探索叢集拓撲，並重新建立連線。  | 
|  可設定性  |  沒有可用的精細組態。客戶可以設定基本設定，包括可存取快取的子網路、是否開啟或關閉自動備份，以及快取用量限制上限。  |  節點型叢集提供精細的組態選項。客戶可以使用參數群組進行精細控制。如需根據節點類型的參數值表，請參閱 [引擎特定參數](ParameterGroups.Engine.md)。  | 
|  Multi-AZ  |  資料會跨多個可用區域非同步複寫，以獲得更高的可用性並改善讀取延遲。  |  提供在單一可用區域或跨多個可用區域 (AZs) 建立叢集的選項。使用 Valkey 或 Redis OSS 時， 為多可用區域叢集提供跨多個可用區域非同步複寫的資料，以提高可用性並改善讀取延遲。  | 
|  靜態加密  |  一律啟用。客戶可以使用AWS 受管金鑰或 中的客戶受管金鑰AWS KMS。  |  啟用或停用靜態加密的選項。啟用時，客戶可以使用AWS 受管金鑰或 中的客戶受管金鑰AWS KMS。  | 
|  傳輸中加密 (TLS)  |  一律啟用。用戶端必須支援 TLS 連線。  |  啟用或停用的選項。  | 
|  備份  |  支援自動和手動備份快取，不會影響效能。 Valkey 和 Redis OSS 備份是跨相容性的，可以還原至 ElastiCache Serverless 快取或節點型叢集。  |  支援 Valkey 和 Redis OSS 的自動和手動備份。叢集可能會看到一些效能影響，具體取決於可用的預留記憶體。如需詳細資訊，請參閱[管理 Valkey 和 Redis OSS 的預留記憶體](redis-memory-management.md)。 Valkey 和 Redis OSS 備份是跨相容性的，可以還原至 ElastiCache Serverless 快取或節點型叢集。  | 
|  監控  |  支援快取層級指標，包括快取命中率、快取遺漏率、資料大小和消耗ECPUs。 當您的快取上發生重大事件時，ElastiCache Serverless 會使用 EventBridge 傳送事件。您可以選擇使用 Amazon EventBridge 來監控、擷取、轉換和處理 ElastiCache 事件。如需詳細資訊，請參閱[無伺服器快取事件](serverless-metrics-events-redis.md#serverless-events)。  |  節點型 ElastiCache 叢集會在每個節點層級發出指標，包括主機層級指標和快取指標。 節點型叢集會發出重大事件的 SNS 通知。請參閱 [Memcached 的指標](CacheMetrics.Memcached.md) 和 [Valkey 和 Redis OSS 的指標](CacheMetrics.Redis.md)。  | 
|  可用性  |  99.99% 可用性[服務水準協議 (SLA)](https://aws.amazon.com/elasticache/sla/)  |  節點型叢集的設計可達到高達 99.99% 的可用性[服務水準協議 (SLA)](https://aws.amazon.com/elasticache/sla/)，視組態而定。  | 
|  軟體升級和修補  |  自動將快取軟體升級至最新的次要和修補程式版本，而不會影響應用程式。客戶會收到主要版本升級的通知，而且客戶可以視需要升級到最新的主要版本。  |  節點型叢集提供客戶啟用的自助式服務，適用於次要和修補版本升級，以及主要版本升級。受管更新會在客戶定義的維護時段期間自動套用。客戶也可以選擇隨需套用次要或修補程式版本升級。  | 
|  全球資料存放區   |  不支援   |  支援全域資料存放區，可使用單一區域寫入和多區域讀取進行跨區域複寫  | 
|  資料分層  |  不支援  |  使用 r6gd 系列節點建立的叢集，其資料會在記憶體和本機 SSD （固態硬碟） 儲存體之間分層。資料分層除了將資料存放在記憶體之外，還在每個叢集節點中使用低成本固態硬碟 (SSDs)，為 Valkey 和 Redis OSS 工作負載提供價格效能選項。  | 
|  定價方式  |  根據以 GB 小時存放的資料和以 ElastiCache 處理單元 (ECPU) 存放的請求，Pay-per-use。請參閱[此處](https://aws.amazon.com/elasticache/pricing/)的定價詳細資訊。  |  Pay-per-hour，以快取節點用量為基礎。請參閱[此處](https://aws.amazon.com/elasticache/pricing/)的定價詳細資訊。  | 

相關主題:
+ [建立和管理以節點為基礎的 ElastiCache 叢集建立和管理以節點為基礎的 ElastiCache 叢集](designing-elasticache-cluster.md)

# 第一次使用 Amazon ElastiCache 資源
<a name="WhatIs.FirstTimeUser"></a>

建議您在開始前先閱讀以下章節，並在需要時用做參考。
+ **服務特色和定價** - [產品詳細資訊頁面](https://aws.amazon.com/elasticache/)提供 ElastiCache 的一般產品概觀、服務特色和定價資訊。
+ **ElastiCache 影片** -「[ElastiCache 影片](Tutorials.md#tutorial-videos)」一節中的影片向您介紹 Amazon ElastiCache。這些影片說明了 ElastiCache 的常見使用案例，並示範如何使用 ElastiCache 來減少應用程式的延遲並提高應用程式的輸送量。
+ **入門** – [Amazon ElastiCache 入門](GettingStarted.md)本節包含建立快取的相關資訊。它還包含如何授權存取快取、連線到快取節點，以及刪除快取。
+ **大幅提高效能** - [使用 Amazon ElastiCache 大幅提升效能白皮書](https://d0.awsstatic.com/whitepapers/performance-at-scale-with-amazon-elasticache.pdf)中，介紹可協助應用程式大幅提升效能的快取策略。

完成前面的章節之後，請閱讀這些章節：
+ [選擇您的節點大小](CacheNodes.SelectSize.md)

  建議具有夠大的節點，以包含所有要快取的資料。同時，您不想要支付超出所需快取數量的費用。此主題可協助您選取最佳節點大小。
+ [ElastiCache 最佳實務和快取策略](BestPractices.md)

  識別並解決可能影響叢集效率的問題。

如果您想要使用AWS Command Line Interface(AWS CLI)，您可以使用這些文件來協助您開始使用：
+ [AWS Command Line Interface文件](https://docs.aws.amazon.com/cli/)

  本節提供下載AWS CLI、讓 在您的系統上AWS CLI運作，以及提供AWS登入資料的相關資訊。
+ [AWS CLI ElastiCache 文件](https://docs.aws.amazon.com/cli/latest/reference/elasticache/index.html)

  此個別文件涵蓋AWS CLI ElastiCache 命令的所有 ，包括語法和範例。

您可以將應用程式編寫為可使用適用各種常用程式設計語言的 ElastiCache API。以下是一些可用資源：
+ [適用於 Amazon Web Services 的工具](https://aws.amazon.com/tools/)

  Amazon Web Services 提供多種支援 ElastiCache 的軟體開發套件 (SDK)。您可以使用 Java、.NET、PHP、Ruby 和其他語言來編寫 ElastiCache 程式碼。透過將傳給 ElastiCache 的請求格式化、剖析回應並提供重試邏輯和錯誤處理，這些軟體開發套件可以大幅簡化您的應用程式開發程序。
+ [使用 ElastiCache API](ProgrammingGuide.md)

  如果您不想使用AWS SDKs，可以直接使用查詢 API 與 ElastiCache 互動。您可以在本節中找到建立與驗證請求與處理回應的疑難排解秘訣和資訊。
+ [Amazon ElastiCache API 參考](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/)

  這份獨立文件說明所有 ElastiCache API 作業，包括語法和範例。

# AWS 區域和可用區域
<a name="WhatIs.AZs"></a>

Amazon 雲端運算資源存放於全球不同區域 (例如北美、歐洲或亞洲) 的高可用性資料中心設施。每個資料中心位置稱為 AWS 區域。

每個 AWS 區域包含多個不同的位置，稱為可用區域或可用AZs。每個可用區域旨在隔離其他可用區域的故障。每個 都旨在為相同區域中的其他可用區域提供經濟實惠的低延遲網路連線 AWS 。藉由在個別的可用區域中啟動執行個體，您就可以保護應用程式免於發生單點故障。如需詳細資訊，請參閱[選擇區域和可用區域](RegionsAndAZs.md)。

您可以在多個可用區域中執行叢集，這種方法稱為異地同步備份部署。選擇這個選項後，Amazon 會自動佈建並維護不同可用區域中的次要備用節點執行個體。您的主節點執行個體會同步跨可用區域同步複寫至次要執行個體。此方法協助提供資料備援與容錯移轉支援、消除輸入/輸出凍結，以及在系統備分期間將延遲峰值降至最低。如需詳細資訊，請參閱[使用異地同步備份將 ElastiCache for Valkey 和 Redis OSS 的停機時間降至最低](AutoFailover.md)。

# 常見 ElastiCache 使用案例及 ElastiCache 如何提供協助
<a name="elasticache-use-cases"></a>

不論是提供最新的新聞、前 10 名排行榜、產品目錄或是出售活動門票，速度都是遊戲的重點。傳遞內容的速度，會顯著影響您網站和商業的成功與否。

在「[對於耐心不足的 Web 使用者來說，一眨眼的等待時間也嫌太長](http://www.nytimes.com/2012/03/01/technology/impatient-web-users-flee-slow-loading-sites.html?pagewanted=all&_r=0)」報導中，New York Times 指出，使用者可以注意到競爭網站之間 250 毫秒 (1/4 秒) 的差異。使用者傾向於放棄速度較慢的網站，而選擇速度較快的網站。Amazon 完成的測試，引自[網頁載入時間與訪客之間的關聯](http://pearanalytics.com/blog/2009/how-webpage-load-time-related-to-visitor-loss/)，指出每載入 100 毫秒 (1/10 秒) 的負載時間，銷售會下降 1%。

當某人想要資料，若這些資料已經過快取，您就可以更迅速提供資料。無論是網頁還是影響商業決策的報告，都適用同樣的道理。您的企業是否能快取您的網頁、以最短的延遲將其傳遞？

很顯然，需要最大的項目，就是您最想要快取的。但為何不快取較不常用的項目？ 即使是經過最佳化的資料庫查詢或遠端 API 呼叫，也會比從記憶體內快取擷取一般金鑰慢很多。*「明顯較慢」*這件事，就會造成客戶流失。

下列範例說明 ElastiCache 能提升您應用程式整體效能的一些方式。

**Topics**
+ [記憶體內資料存放區](#elasticache-use-cases-data-store)
+ [遊戲排行榜](#elasticache-for-redis-use-cases-gaming)
+ [訊息 (Pub/Sub)](#elasticache-for-redis-use-cases-messaging)
+ [建議資料 （雜湊）](#elasticache-for-redis-use-cases-recommendations)
+ [生成式 AI 應用程式的語意快取](#elasticache-for-redis-use-cases-semantic-caching)
+ [ElastiCache 客戶見證](#elasticache-use-cases-testimonials)

## 記憶體內資料存放區
<a name="elasticache-use-cases-data-store"></a>

記憶體內鍵/值存放區的主要目的，是提供超快速 (亞毫秒級延遲) 和經濟實惠的資料複本存取。大多數資料存放區，都具有經常存取但不常更新的資料區域。此外，對資料庫進行查詢，總是比在鍵/值對快取中找出鍵要更慢，且費用更高。執行某些資料庫查詢的費用特別昂貴。其中一個例子是涉及跨多個資料表之聯結的查詢，或具有密集型計算的查詢。透過快取這類查詢結果，您只需支付查詢的一次性費用。然後就可以快速擷取資料多次，而無需重新執行查詢。

### 我應該快取什麼？
<a name="elasticache-use-cases-data-store-what-to-cache"></a>

在決定要快取哪些資料時，請考慮下列因素：

**速度和費用** - 從資料庫取得資料，總是比從快取要來得慢，且費用更高。某些資料庫查詢在本質上比其他查詢更慢且更昂貴。例如，在多個資料表上執行聯結查詢，與簡單的單一資料表查詢相比，前者的速度明顯較慢且費用更高。如果需要以較慢且費用較高的查詢方式來取得所需資料，則適合改為快取。如果需要以相對快速和簡單的查詢來取得資料，仍可能適合使用快取，具體取決於其他因素。

**資料和存取模式** - 判斷要快取的內容也涉及了解資料本身及其存取模式。例如，快取快速變動或很少存取的資料並沒有意義。若要讓快取提供真正的益處，資料應為相對靜態且經常存取。例如社群媒體網站上的個人資料。相反地，如果快取資料不能提供速度或成本優勢，則不建議快取資料。例如，快取會傳回搜尋結果的網頁並沒有意義，因為查詢和結果通常都是獨一無二的。

**過時** - 根據定義，快取的資料是過時的資料。即使某些情況下並非過時，仍應該一律視為過時。若要判斷您的資料是否適合快取，您需要判斷應用程式對過時資料的容錯能力。

您的應用程式或許能承受某個內容中的過時資料，但不能承受另一個內容中的過時資料。例如，假設您的網站提供公開交易股票價格。在附有免責聲明，表示可能有 *n* 分鐘延遲的情況下，您的客戶可能會接受一定程度的過時性。但是，如果是向銷售或購買的經紀人提供股票價格，您需要即時的資料。

如果下列描述成立，便可考慮快取您的資料：
+ 與快取擷取相比，取得您資料的速度緩慢或費用高昂。
+ 使用者經常存取您的資料。
+ 您的資料相對保持無變動，或者資料會快速變動但過時性不夠成大問題。

如需詳細資訊，請參閱[Memcached 的快取策略](Strategies.md)

## 遊戲排行榜
<a name="elasticache-for-redis-use-cases-gaming"></a>

使用 Valkey 或 Redis OSS 排序集，您可以將排行榜的運算複雜性從應用程式移至叢集。

排行榜 (例如遊戲得分的前 10 名) 的運算方式很複雜。當有大量玩家同時遊戲且分數不斷變動時，運算尤其複雜。Valkey 和 Redis OSS 排序集保證唯一性和元素排序。使用排序集，每次將新元素新增至排序集時，都會即時重新排名。然後會以正確的數字順序新增至集合。

在下圖中，您可以查看 ElastiCache 遊戲排行榜的運作方式。

![\[\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/ElastiCache-Redis-Gaming.png)


**Example Valkey 或 Redis OSS 排行榜**  
在此範例中，四名玩家及其分數會透過 `ZADD` 輸入排序清單中。`ZREVRANGEBYSCORE` 命令會依照分數列出玩家，由高至低。接下來，`ZADD` 會用於更新 June 的分數 (透過覆寫現有項目)。最後，`ZREVRANGEBYSCORE` 會依照分數由高至低列出玩家。清單顯示 June 的排名已上升。  

```
ZADD leaderboard 132 Robert
ZADD leaderboard 231 Sandra
ZADD leaderboard 32 June
ZADD leaderboard 381 Adam
			
ZREVRANGEBYSCORE leaderboard +inf -inf
1) Adam
2) Sandra
3) Robert
4) June

ZADD leaderboard 232 June

ZREVRANGEBYSCORE leaderboard +inf -inf
1) Adam
2) June
3) Sandra
4) Robert
```
下列命令可讓 June 得知她在所有玩家中的排名。由於排名以零為起始，*ZREVRANK* 會為排名第二的 June 傳回 1。  

```
ZREVRANK leaderboard June 
1
```

如需詳細資訊，請參閱有關已排序集的 [Valkey 文件](https://valkey.io/topics/sorted-sets/)。

## 訊息 (Pub/Sub)
<a name="elasticache-for-redis-use-cases-messaging"></a>

當您傳送電子郵件時，您會將郵件傳送給一或多個指定的收件人。在 Valkey 和 Redis OSS pub/sub 範式中，您會傳送訊息到特定頻道，不知道誰會收到它。訂閱該頻道的人員會收到訊息。例如，假設您訂閱了 *news.sports.golf* 頻道。您和 *news.sports.golf* 頻道的其他訂閱者，都會收到發佈至 *news.sports.golf* 頻道的所有訊息。

Pub/sub 功能與任何金鑰空間無關。因此，在任何層級上都不會造成干擾。在下圖中，您可以找到 ElastiCache 訊息與 Valkey 和 Redis OSS 的圖例。

![\[\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/ElastiCache-Redis-PubSub.png)


### 訂閱
<a name="elasticache-use-cases-messaging-subscribing"></a>

若要接收某頻道的訊息，您需訂閱該頻道。您可以訂閱單一頻道、多個頻道或所有匹配某種模式的頻道。若要取消訂閱，請從您訂閱的指定頻道取消訂閱。或者，如果您使用模式比對功能進行訂閱，取消訂閱時也會使用與之前相同的模式。

**Example - 訂閱單一頻道**  
若要訂閱單一頻道，請使用 SUBSCRIBE 命令來指定您希望訂閱的頻道。在下列範例中，用戶端訂閱了 *news.sports.golf* 頻道。  

```
SUBSCRIBE news.sports.golf
```
一段時間過後，用戶端使用 UNSUBSCRIBE 命令來指定希望取消訂閱的頻道，並取消了訂閱。  

```
UNSUBSCRIBE news.sports.golf
```

**Example - 訂閱多個特定頻道**  
若要訂閱多個特定頻道，請使用 SUBSCRIBE 命令來列出頻道。在下列範例中，用戶端同時訂閱了*news.sports.golf*、*news.sports.soccer* 和 *news.sports.skiing* 頻道。  

```
SUBSCRIBE news.sports.golf news.sports.soccer news.sports.skiing
```
若要取消訂閱特定頻道，請使用 UNSUBSCRIBE 命令並指定希望取消訂閱的頻道。  

```
UNSUBSCRIBE news.sports.golf
```
若要取消訂閱多個頻道，請使用 UNSUBSCRIBE 命令並指定希望取消訂閱的頻道。  

```
UNSUBSCRIBE news.sports.golf news.sports.soccer
```
若要取消所有訂閱，請使用 `UNSUBSCRIBE` 並指定每個頻道。或使用 `UNSUBSCRIBE` 且不指定頻道。  

```
UNSUBSCRIBE news.sports.golf news.sports.soccer news.sports.skiing
```
或  

```
UNSUBSCRIBE
```

**Example - 使用模式匹配的訂閱**  
用戶端可以使用 PSUBSCRIBE 命令來訂閱匹配某種模式的所有頻道。  
在下列範例中，用戶端訂閱了所有體育頻道。您不需要分別列出所有體育頻道，如同使用 `SUBSCRIBE`。而是可透過 `PSUBSCRIBE` 命令使用模式比對功能。  

```
PSUBSCRIBE news.sports.*
```

**Example 取消訂閱**  
若要取消訂閱這些頻道，請使用 `PUNSUBSCRIBE` 命令。  

```
PUNSUBSCRIBE news.sports.*
```
+ 傳送至 [P]SUBSCRIBE 命令及 [P]UNSUBSCRIBE 命令的頻道字串必須相符。您不能對 *news.\$1* 使用 `PSUBSCRIBE`、對 *news.sports.\$1* 使用 `PUNSUBSCRIBE`，也不能對 *news.sports.golf* 使用 `UNSUBSCRIBE`。
+ `PSUBSCRIBE` 和 `PUNSUBSCRIBE` 不適用於 ElastiCache Serverless。

### 發布
<a name="elasticache-for-redis-use-cases-messaging-publishing"></a>

若要向某頻道中的所有訂閱者傳送訊息，請使用 `PUBLISH` 命令，指定頻道和訊息。下列範例將「這是個晴朗的星期六，我要前往連結了。」訊息發佈 到 *news.sports.golf* 頻道。

```
PUBLISH news.sports.golf "It's Saturday and sunny. I'm headed to the links."
```

用戶端無法發佈至其訂閱的頻道。

如需詳細資訊，請參閱 Valkey 文件中的 [Pub/Sub](https://valkey.io/topics/pubsub)。

## 建議資料 （雜湊）
<a name="elasticache-for-redis-use-cases-recommendations"></a>

在 Valkey 或 Redis OSS 中使用 INCR 或 DECR 可讓編譯建議變得簡單。當每次有使用者「喜歡」某項產品時，會遞增 *item:productID:like* 計數器。當每次有使用者「不喜歡」某項產品時，會遞增 *item:productID:dislike* 計數器。使用雜湊，您也可以維護喜歡或不喜歡產品的每個人清單。

**Example - 喜歡和不喜歡**  

```
INCR item:38923:likes
HSET item:38923:ratings Susan 1
INCR item:38923:dislikes
HSET item:38923:ratings Tommy -1
```

## 生成式 AI 應用程式的語意快取
<a name="elasticache-for-redis-use-cases-semantic-caching"></a>

由於與大型語言模型 (LLMs。您可以使用 ElastiCache 在生成式 AI 應用程式中進行語意快取，從而降低 LLM 推論呼叫的成本和延遲。透過語意快取，您可以使用向量型比對來尋找目前和先前提示之間的相似性，以傳回快取的回應。如果使用者的提示詞類似於先前的提示詞，則會傳回快取的回應，而不是進行新的 LLM 推論呼叫，從而降低生成式 AI 應用程式的成本，並提供更快的回應來改善使用者體驗。您可以設定提示的相似性閾值並套用標籤或數值中繼資料篩選條件，以控制哪些查詢路由至快取。

ElastiCache 向量搜尋提供的內嵌即時索引更新有助於確保快取隨著使用者提示和 LLM 回應流程持續更新。這種即時索引對於保持快取結果和快取命中率的新鮮度至關重要，特別是對於尖峰流量。此外，ElastiCache 透過成熟快取基本概念簡化語意快取的操作，例如每個金鑰 TTLs、可設定的移出策略、原子操作，以及豐富的資料結構和指令碼支援。

**生成式 AI 助理和代理器的記憶體**

您可以使用 ElastiCache 實作記憶體機制，將跨工作階段對話歷史記錄呈現給 LLMs，以提供更個人化的內容感知回應。對話式記憶體可讓生成式 AI 助理和客服人員保留和使用過去的互動，以個人化回應並改善相關性。不過，簡單地將所有先前的互動彙總到提示中是無效的，因為不相關的額外權杖會增加成本、降低回應品質，以及超出 LLM 內容視窗的風險。反之，您可以使用向量搜尋來擷取並提供每個 LLM 調用內容中最相關的資料。

ElastiCache for Valkey 提供與開放原始碼記憶體層的整合，提供內建連接器來存放和擷取 LLM 應用程式和代理程式的記憶體。ElastiCache 的向量搜尋提供快速索引更新、讓記憶體保持最新狀態，並讓新的記憶體立即可搜尋。低延遲向量搜尋可讓記憶體查詢快速進行，使其能夠實作在每個請求的線上路徑中，而不只是背景任務。除了向量搜尋之外，ElastiCache for Valkey 還提供工作階段狀態、使用者偏好設定和功能旗標的快取基本概念，提供單一服務，將短期工作階段狀態和長期「記憶體」存放在一個資料存放區中。

**擷取擴增產生 (RAG)**

RAG 是在提示中提供 LLMs up-to-date的程序，以改善回應的相關性。RAG 透過使用實際資料來源將輸出接地，減少幻覺並改善事實準確性。RAG 應用程式使用向量搜尋，從知識庫擷取語意相關內容。ElastiCache 提供的低延遲向量搜尋，適合在具有數百萬個向量以上的大型資料集的工作負載中實作 RAG。此外，線上向量索引更新的支援使得 ElastiCache 適合上傳工作流程需要確保任何上傳資料可立即搜尋的助理。代理式 AI 系統中的 RAG 可確保代理程式擁有up-to-date資訊，以準確執行動作。低延遲向量搜尋對於代理式 AI 系統中的 RAG 來說也很重要，其中單一查詢可以觸發多個 LLM 呼叫，並從基礎向量搜尋堆疊延遲。

下圖說明使用 ElastiCache 實作語意快取、記憶體機制和 RAG 來增強生產中生成式 AI 應用程式的範例架構。

![\[生成式 AI 助理執行的語意搜尋圖表。\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/vector-search-gen-ai1.png)


**語意搜尋**

向量搜尋會根據意義或功能的親近度擷取最相關的文字、語音、影像或影片資料。此功能可讓機器學習應用程式依賴於各種資料模式的相似性搜尋，包括建議引擎、異常偵測、個人化和知識管理系統。建議系統使用向量表示法來擷取使用者行為和項目特性中的複雜模式，讓他們能夠建議最相關的內容。ElastiCache 的向量搜尋非常適合這些應用程式，因為其近乎即時的更新和低延遲，使得相似性比較能夠根據即時使用者互動提供即時、高度相關的建議。

## ElastiCache 客戶見證
<a name="elasticache-use-cases-testimonials"></a>

若要了解 Airbnb、PBS、Esri 和其他企業如何使用 Amazon ElastiCache，透過改善客戶體驗來促進業務成長，請參閱[其他人如何使用 Amazon ElastiCache](https://aws.amazon.com/elasticache/testimonials/)。

您也可以觀看其他 ElastiCache 客戶使用案例的[教學課程影片](Tutorials.md#tutorial-videos)。