

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

# 將自動探索新增至 Memcached 用戶端程式庫
<a name="AutoDiscovery.AddingToYourClientLibrary"></a>

Auto Discovery 的組態資訊會以備援方式存放在每個 Memcached 叢集節點中。用戶端應用程式可查詢任何快取節點，並取得叢集內所有節點的組態資訊。

應用程式執行此作業的方式取決於快取引擎版本：
+ 若快取引擎版本為 **1.4.14 或更高版本**，請使用 `config` 命令。
+ 若快取引擎版本**低於 1.4.14**，請使用 `get AmazonElastiCache:cluster` 命令。

這兩個命令的輸出完全相同，並且會在以下的[輸出格式](#AutoDiscovery.AddingToYourClientLibrary.OutputFormat)一節中說明。

## 快取引擎版本 1.4.14 或更新版本
<a name="AutoDiscovery.AddingToYourClientLibrary.1-4-14-plus"></a>

針對 1.4.14 或更高的快取引擎版本，請使用 `config` 命令。此命令已新增到 ElastiCache 的 Memcached ASCII 及二進位通訊協定中，並且已在 ElastiCache 叢集用戶端中實作。若您希望搭配其他用戶端程式庫使用自動探索，該程式庫必須進行擴充以支援 `config` 命令。

**注意**  
以下文件適用於 ASCII 通訊協定。但是，`config` 命令同時支援 ASCII 及二進位。若您希望新增支援使用二進位通訊協定的自動探索功能，請參閱 [ElastiCache 叢集用戶端的原始碼](https://github.com/amazonwebservices/aws-elasticache-cluster-client-memcached-for-java/tree/master/src/main/java/net/spy/memcached/protocol/binary)。

**語法**

`config [sub-command] [key]`

### 選項
<a name="AutoDiscovery.AddingToYourClientLibrary.1-4-14-plus.Options"></a>


| 名稱 | 描述 | 必要 | 
| --- | --- | --- | 
| sub-command |  用來與快取節點互動的子命令。針對自動探索，此子命令為 `get`。  | 是 | 
| key |  鍵名稱，叢集組態會存放在該鍵之下。針對自動探索，此鍵名為 `cluster`。  | 是 | 

若要取得叢集組態資訊，請使用以下命令：

```
config get cluster
```

## 快取引擎 1.4.14 版或更低版本
<a name="AutoDiscovery.AddingToYourClientLibrary.pre-1-4-14"></a>

若要取得叢集組態資訊，請使用以下命令：

```
get AmazonElastiCache:cluster
```

**注意**  
請勿竄改 "AmazonElastiCache:cluster" 鍵，因為這是保存叢集組態資訊的位置。若您覆寫了此鍵，則不正確的用戶端設定可能持續短暫的期間 (不超過 15 秒)，之後 ElastiCache 便會自動並正確地更新組態資訊。

## 輸出格式
<a name="AutoDiscovery.AddingToYourClientLibrary.OutputFormat"></a>

無論您使用 `config get cluster` 或 `get AmazonElastiCache:cluster`，回應都由兩行文字組成：
+ 組態資訊的版本編號。每次從叢集新增或移除節點時，版本編號都會增加 1。
+ 快取節點的清單。清單中的每個節點都會以 *hostname\$1ip-address\$1port* 群組表示，並且每個節點都會以一個空格分隔。

歸位字元和換行字元 (CR \$1 LF) 會出現在每一行的結尾。資料行的結尾包含一個換行字元 (LF)，CR \$1 LF 會新增到該處。組態版本行會以不帶 CR 的 LF 終止。

包含三個節點的叢集將如下所示：

```
configversion\n
hostname|ip-address|port hostname|ip-address|port hostname|ip-address|port\n\r\n
```

每個節點都會同時顯示 CNAME 及私有 IP 地址。CNAME 一律會存在。若私有 IP 地址無法使用，便不會顯示。但是，仍會印出管道字元 "`|`"。

**Example**  
以下是當您查詢組態資訊時，所傳回承載的範例：  

```
CONFIG cluster 0 136\r\n
12\n
myCluster.pc4ldq.0001.use1.cache.amazonaws.com|10.82.235.120|11211 myCluster.pc4ldq.0002.use1.cache.amazonaws.com|10.80.249.27|11211\n\r\n 
END\r\n
```

**注意**  
第二行指出組態資訊至今已經過修改十二次。
在第三行中，節點清單是以主機名稱的字母順序排序。此順序的排列方式可能會跟您目前於用戶端應用程式中使用的順序不同。