

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

# 建立 Memcached 無伺服器快取
<a name="create-serverless-cache-mem"></a>

**AWS 管理主控台**

若要使用 ElastiCache 主控台建立新的 Memcached 無伺服器快取：

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/) 的 ElastiCache 主控台。

1. 在主控台左側的導覽窗格中，選擇 **Memcached 快取**。

1. 在主控台的右側，選擇**建立 Memcached 快取**。

1. 在**快取設定**中，輸入**名稱**。您可以選擇性地輸入快取的**說明**。

1. 讓預設設定保持選取狀態。

1. 按一下**建立**以建立快取。

1. 快取處於「作用中」狀態後，您就可以開始對快取寫入和讀取資料。

使用 建立新的快取 AWS CLI

下列 AWS CLI 範例使用 create-serverless-cache 建立新的快取。

**Linux**

```
aws elasticache create-serverless-cache \
		--serverless-cache-name CacheName \
		--engine memcached
```

**Windows**

```
aws elasticache create-serverless-cache ^
		--serverless-cache-name CacheName ^
		--engine memcached
```

請注意，「狀態」欄位的值會設定為 `CREATING`。

若要確認 ElastiCache 已完成建立快取，請使用 `describe-serverless-caches` 命令。

**Linux**

```
aws elasticache describe-serverless-caches --serverless-cache-name CacheName
```

**Windows**

```
aws elasticache describe-serverless-caches --serverless-cache-name CacheName
```

建立新快取後，繼續進行 [讀取和寫入資料至快取](read-write-cache-mem.md)。

# 讀取和寫入資料至快取
<a name="read-write-cache-mem"></a>

本節假設您已建立 Amazon EC2 執行個體且可連線至該執行個體。如需操作方式說明，請參閱 [Amazon EC2 入門指南](https://aws.amazon.com/ec2/getting-started/)。

根據預設，ElastiCache 會在您的預設 VPC 中建立快取。請確認您的 EC2 執行個體同樣是在預設 VPC 中建立，如此它才能連線至快取。

**尋找您的快取端點**

**AWS 管理主控台**

使用 ElastiCache 主控台尋找您的快取端點：

1. 登入AWS 管理主控台，並在 [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)：// 開啟 Amazon ElastiCache 主控台。

1. 在主控台左側的導覽窗格中，選擇 **Memcached 快取**。

1. 在控制台的右側，按一下您剛建立的快取名稱。

1. 在**快取詳細資訊**中，尋找並複製快取端點。

**AWS CLI**

下列AWS CLI範例顯示 使用 describe-serverless-caches 命令尋找新快取的端點。執行命令後，查詢「端點」欄位。

**Linux**

```
aws elasticache describe-serverless-caches \
		--serverless-cache-name CacheName
```

**Windows**

```
aws elasticache describe-serverless-caches ^
		--serverless-cache-name CacheName
```

## 使用 OpenSSL 進行連線
<a name="w2aac14c21c41c29b1"></a>

 如需如何使用 OpenSSL 進行連線的詳細資訊，請參閱 [ElastiCache 傳輸中加密 (TLS)](in-transit-encryption.md)。

## 使用 Memcached Java 用戶端進行連線
<a name="w2aac14c21c41c29b3"></a>

```
import java.security.KeyStore;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
import net.spy.memcached.AddrUtil;
import net.spy.memcached.ConnectionFactoryBuilder;
import net.spy.memcached.FailureMode;
import net.spy.memcached.MemcachedClient;

public class TLSDemo {
    public static void main(String[] args) throws Exception {
        ConnectionFactoryBuilder connectionFactoryBuilder = new ConnectionFactoryBuilder();
        // Build SSLContext
        TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        tmf.init((KeyStore) null);
        SSLContext sslContext = SSLContext.getInstance("TLS");
        sslContext.init(null, tmf.getTrustManagers(), null);
        // Create the client in TLS mode
        connectionFactoryBuilder.setSSLContext(sslContext);
        // Set Failure Mode to Retry
        connectionFactoryBuilder.setFailureMode(FailureMode.Retry);
        MemcachedClient client = new MemcachedClient(connectionFactoryBuilder.build(), AddrUtil.getAddresses("mycluster-fnjyzo.serverless.use1.cache.amazonaws.com:11211"));

        // Store a data item for an hour.
        client.set("theKey", 3600, "This is the data value");
    }
}
```

## 使用 Memcached PHP 用戶端進行連線
<a name="w2aac14c21c41c29b5"></a>

```
<?php
$cluster_endpoint = "mycluster.serverless.use1.cache.amazonaws.com";
$server_port = 11211; 

/* Initialize a persistent Memcached client in TLS mode */
$tls_client = new Memcached('persistent-id');
$tls_client->addServer($cluster_endpoint, $server_port);
if(!$tls_client->setOption(Memcached::OPT_USE_TLS, 1)) {
    echo $tls_client->getLastErrorMessage(), "\n";
    exit(1);
}
$tls_config = new MemcachedTLSContextConfig();
$tls_config->hostname = '*.serverless.use1.cache.amazonaws.com';
$tls_config->skip_cert_verify = false;
$tls_config->skip_hostname_verify = false;
$tls_client->createAndSetTLSContext((array)$tls_config); 

 /* store the data for 60 seconds in the cluster */
$tls_client->set('key', 'value', 60);
?>
```

## 使用 Memcached Python 用戶端 (Pymemcache) 進行連線
<a name="w2aac14c21c41c29b7"></a>

請參閱 [https://pymemcache.readthedocs.io/en/latest/getting\$1started.html](https://pymemcache.readthedocs.io/en/latest/getting_started.html)

```
import ssl
from pymemcache.client.base import Client
		
context = ssl.create_default_context()
cluster_endpoint = <To be taken from the AWS CLI / console>
target_port = 11211
memcached_client = Client(("{cluster_endpoint}", target_port), tls_context=context)
memcached_client.set("key", "value", expire=500, noreply=False)
assert self.memcached_client.get("key").decode() == "value"
```

## 使用 Memcached NodeJS/TS 用戶端 (Electrode-IO memcache) 進行連線
<a name="w2aac14c21c41c29b9"></a>

請參閱 [https://github.com/electrode-io/memcache](https://github.com/electrode-io/memcache) 和 [https://www.npmjs.com/package/memcache-client](https://www.npmjs.com/package/memcache-client)

透過 `npm i memcache-client` 進行安裝

在應用程式中，依照下述建立 Memcached TLS 用戶端：

```
var memcache = require("memcache-client");
const client = new memcache.MemcacheClient({server: "{cluster_endpoint}:11211", tls: {}});
client.set("key", "value");
```

## 使用 Memcached Rust 用戶端 (rust-memcache) 進行連線
<a name="w2aac14c21c41c29c11"></a>

請參閱 [https://crates.io/crates/memcache](https://crates.io/crates/memcache) 和 [https://github.com/aisk/rust-memcache](https://github.com/aisk/rust-memcache)。

```
// create connection with to memcached server node:
let client = memcache::connect("memcache+tls://<cluster_endpoint>:11211?verify_mode=none").unwrap();
				
// set a string value
client.set("foo", "bar", 0).unwrap();
```

## 使用 Memcached Go 用戶端 (Gomemcache) 進行連線
<a name="w2aac14c21c41c29c13"></a>

請參閱 [https://github.com/bradfitz/gomemcache](https://github.com/bradfitz/gomemcache)

```
c := New(net.JoinHostPort("{cluster_endpoint}", strconv.Itoa(port)))
c.DialContext = func(ctx context.Context, network, addr string) (net.Conn, error) {
var td tls.Dialer
td.Config = &tls.Config{}
return td.DialContext(ctx, network, addr)
}
foo := &Item{Key: "foo", Value: []byte("fooval"), Flags: 123}
err := c.Set(foo)
```

## 使用 Memcached Ruby 用戶端 (Dalli) 進行連線
<a name="w2aac14c21c41c29c15"></a>

請參閱 [https://github.com/petergoldstein/dalli](https://github.com/petergoldstein/dalli)

```
require 'dalli'
ssl_context = OpenSSL::SSL::SSLContext.new
ssl_context.ssl_version = :SSLv23
ssl_context.verify_hostname = true
ssl_context.verify_mode = OpenSSL::SSL::VERIFY_PEER
client = Dalli::Client.new("<cluster_endpoint>:11211", :ssl_context => ssl_context); 
client.get("abc")
```

## 使用 Memcached .NET 用戶端 (EnyimMemcachedCore) 進行連線
<a name="w2aac14c21c41c29c17"></a>

請參閱 [https://github.com/cnblogs/EnyimMemcachedCore](https://github.com/cnblogs/EnyimMemcachedCore)

```
"MemcachedClient": {
"Servers": [
{
"Address": "{cluster_endpoint}",
"Port": 11211
}
],
"UseSslStream":  true
}
```

現在您可以繼續進行 [(選用) 清除](read-write-cleanup-mem.md)。

# (選用) 清除
<a name="read-write-cleanup-mem"></a>

**使用AWS 管理主控台**

以下程序會從您的部署中刪除單一快取。若要刪除多個快取，請針對每個要刪除的快取重複此程序。您不需要等待某個快取完成刪除，即可開始刪除其他快取。

**刪除快取**

1. 登入AWS 管理主控台，並在 [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)：// 開啟 Amazon ElastiCache 主控台。

1. 在 ElastiCache 主控台儀表板中，選擇在要刪除的快取上執行的引擎。接著會出現執行該引擎的所有快取清單。

1. 若要選擇要刪除的快取，請從快取清單中選擇快取的名稱。
**重要**  
 您一次只能從 ElastiCache 主控台刪除一個快取。選擇多個快取會停用刪除操作。

1. 對於 **Actions** (動作)，請選擇 **Delete** (刪除)。

1. 在**刪除快取**確認畫面中，選擇**刪除**以刪除快取，或選擇**取消**以保留叢集。

1. 如果您選擇**刪除**，快取的狀態就會變更為*正在刪除*。

一旦您的快取進入**刪除中**狀態，就不會再對您收費。

**使用AWS CLI**

下列程式碼會刪除 my-cache 快取。

```
aws elasticache delete-serverless-cache --serverless-cache-name my-cache
```

delete-serverless-cache CLI 動作只會刪除一個無伺服器快取。若要刪除多個快取，請針對您要刪除的每個無伺服器快取呼叫 delete-serverless-cache。您不需要等待某個無伺服器快取完成刪除，即可刪除其他快取。

**若為 Linux、macOS 或 Unix：**

```
aws elasticache delete-serverless-cache \
		--serverless-cache-name my-cache
```

**用於 Windows：**

```
aws elasticache delete-serverless-cache ^
		--serverless-cache-name my-cache
```

如需詳細資訊，請參閱AWS CLI for ElastiCache 主題 delete-serverless-cache。

現在您可以繼續進行 [後續步驟](next-steps-mem.md)。

# 後續步驟
<a name="next-steps-mem"></a>

如需有關 ElastiCache 的詳細資訊，請參閱：
+ [使用 ElastiCache](WorkingWithElastiCache.md)
+ [擴展 ElastiCache](Scaling.md)
+ [ElastiCache 的配額](quota-limits.md)
+ [ElastiCache 最佳實務和快取策略](BestPractices.md)
+ [檢視 ElastiCache 事件](ECEvents.Viewing.md)