

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建 Memcached 无服务器缓存
<a name="create-serverless-cache-mem"></a>

**AWS 管理控制台**

要使用 ElastiCache 控制台创建新的 Memcached 无服务器缓存，请执行以下操作：

1. 登录 AWS 管理控制台 并打开 ElastiCache 控制台（[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/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/)。

默认情况下，在您的默认 VPC 中 ElastiCache 创建缓存。确保您的 EC2 实例也是在默认 VPC 中创建的，以便它能够连接到缓存。

**查找缓存端点**

**AWS 管理控制台**

要使用 ElastiCache 控制台查找缓存的终端节点，请执行以下操作：

1. 登录AWS 管理控制台并打开 Amazon ElastiCache 控制台，网址为[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/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](https://pymemcache.readthedocs.io/en/latest/getting_started.html)\$1started.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 内存缓存）连接
<a name="w2aac14c21c41c29b9"></a>

[参见[https://github.com/electrode-io/内存缓存和内存缓存](https://github.com/electrode-io/memcache)客户端 https://www.npmjs.com/package/](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-memcach](https://github.com/aisk/rust-memcache) e。

```
// 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/gomemcach](https://github.com/bradfitz/gomemcache) e

```
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 管理控制台并打开 Amazon ElastiCache 控制台，网址为[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)。

1. 在 ElastiCache 控制台仪表板中，选择要删除的缓存上运行的引擎。此时会显示运行该引擎的所有缓存的列表。

1. 要选择缓存以便删除，请从缓存列表中选择缓存的名称。
**重要**  
 您一次只能从 ElastiCache 控制台删除一个缓存。选择多个缓存会禁用删除操作。

1. 对于**操作**，选择**删除**。

1. 在**删除缓存**确认屏幕上，选择**删除**可删除缓存，选择**取消**可保留集群。

1. 如果选择了**删除**，则缓存的状态将变为*正在删除*。

当缓存进入**正在删除**状态之后，您便不再需要支付缓存费用。

**使用AWS CLI**

下面的代码删除缓存 my-cache。

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

C delete-serverless-cache LI 操作仅删除一个无服务器缓存。要删除多个缓存，请调 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
```

有关更多信息，请参阅 f AWS CLI or 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)