

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Memcached 서버리스 캐시 생성
<a name="create-serverless-cache-mem"></a>

**AWS Management Console**

ElastiCache 콘솔을 사용하여 새 Memcached 서버리스 캐시를 만들려면 다음과 같이 하세요.

1. AWS Management Console에 로그인하고[ 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에 캐시를 생성합니다. 기본 VPC에서도 EC2 인스턴스를 생성해야 캐시에 연결할 수 있습니다.

**캐시 엔드포인트 확인**

**AWS Management Console**

ElastiCache 콘솔을 사용하여 캐시의 엔드포인트를 확인하려면 다음과 같이 하세요.

1. 에 로그인AWS Management Console하고 [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 클라이언트(전극 I/O 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`를 통해 설치합니다.

애플리케이션에서 다음과 같이 Memcache 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 Management Console**

다음은 배포에서 캐시 하나를 삭제하는 절차입니다. 캐시를 여러 개 삭제하려면 삭제할 캐시마다 절차를 반복합니다. 캐시 하나를 다 삭제한 후 다른 캐시 삭제 절차가 시작될 때까지 기다릴 필요는 없습니다.

**캐시를 삭제하려면 다음과 같이 하세요.**

1. 에 로그인AWS Management Console하고 [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/) Amazon ElastiCache 콘솔을 엽니다.

1. ElastiCache 콘솔 대시보드에서 삭제하려는 캐시가 실행 중인 엔진을 선택합니다. 해당 엔진을 실행하고 있는 모든 캐시의 목록이 표시됩니다.

1. 삭제할 캐시를 선택하려면 캐시 목록에서 캐시 이름을 선택합니다.
**중요**  
 ElastiCache 콘솔에서는 캐시를 한 번에 하나씩만 삭제할 수 있습니다. 여러 캐시를 선택하면 삭제 작업이 비활성화됩니다.

1. **작업**에 대해 **삭제**를 선택합니다.

1. **캐시 삭제** 확인 화면에서 **삭제**를 선택하여 캐시를 삭제하거나 **취소**를 선택하여 클러스터를 유지합니다.

1. **삭제**를 선택한 경우 캐시 상태가 *삭제 중*으로 바뀝니다.

캐시가 **삭제 중** 상태로 전환되면 그 즉시 요금 발생이 중지됩니다.

**사용AWS CLI**

다음 코드는 my-cache 캐시를 삭제합니다.

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

delete-serverless-cache CLI 작업은 서버리스 캐시 1개만 삭제합니다. 여러 캐시를 삭제하려면 삭제할 서버리스 캐시별로 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
```

자세한 내용은 ElastiCache 주제 delete-serverless-cache AWS CLI용 섹션을 참조하세요.

이제 [다음 단계](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)