16.6 MySQL과 memcached의 병용
memcached는 사용 가능한 전용 또는 여분의 RAM에 데이터와 객체를 포함하여 응용 프로그램이 분석의 레이어와 디스크 I / O를 거치지 않고 빠르게 액세스 할 수 있도록 간단하고 확장 성 높은 키 기반 캐시입니다. 사용하려면 하나 이상의 호스트에서 memcached 명령을 실행하고 공유 캐시를 사용하여 객체를 저장합니다. 스레드 지원 자세한 내용은 섹션 16.6.2 "memcached 사용" 을 참조하십시오.
memcached를 사용하면 다음과 같은 이점이 있습니다.
모든 정보가 RAM에 저장되기 때문에 디스크에서 매번 정보를로드하는 것보다 더 빠르게 액세스 할 수 있습니다.
키 / 값 쌍의 "값"부분에 데이터 형식 제약 조건이 없기 때문에 복잡한 구조, 문서, 이미지, 또는 이들의 조합 등의 데이터를 캐시 할 수 있습니다.
이 인 메모리 캐시를 임시 정보를 유지하기 위해 또는 데이터베이스에 저장되는 정보의 읽기 전용 캐시로 사용하는 경우 memcached 서버의 장애는 중요하지 않습니다. 영구 데이터는 데이터베이스 쿼리를 사용하는 대체 조회 방법에 대체하여 다른 서버의 RAM에 데이터를 다시로드 할 수 있습니다.
일반적인 사용 환경에서는 memcached가 제공하는 캐시에서 정보를 읽도록 응용 프로그램을 수정합니다. 정보를 memcached에 존재하지 않는 경우는 MySQL 데이터베이스에서 데이터가로드 된 캐시 된 데이터를 이용하여 후속하는 동일한 개체의 요청을 처리 할 수 있도록 캐시에 데이터가 기록됩니다.
일반적으로 배포 레이아웃은 그림 16.4 "memcached 아키텍처 개요" 를 참조하십시오.
그림 16.4 memcached 아키텍처 개요
이 구조 예에서는 모든 클라이언트 중 하나 memcached 서버에 연결하여 특정 키를 요청할 수 있습니다. 각 클라이언트는 그림에 나와있는 모든 서버와 통신하도록 구성됩니다. 클라이언트의 내부 정보를 저장하도록 요구되는 데이터 참조에 사용되는 키가 해시, 해시를 사용하여 하나의 memcached 서버가 선택됩니다. memcached 서버 선택은 서버에 연결하기 전에 클라이언트에서 수행되기 때문에이 과정은 경량 남아있다.
클라이언트가 동일한 키를 요청하면 동일한 알고리즘이 다시 사용됩니다. 같은 키에 같은 해시가 생성되고 같은 memcached 서버가 데이터 소스로 선택됩니다. 이 방법을 사용하면 캐시 된 데이터가 모든 memcached 서버에 분산 어떤 클라이언트에서도 캐시 된 정보에 액세스 할 수 있습니다. 따라서 데이터베이스에서 기본적으로 정보를 읽을 때보 다 훨씬 빠르게 정보 (특히 복잡한 데이터 및 구조)를 반환 할 수있는 분산 형 메모리 기반 캐시가 제공됩니다.
기존의 memcached 서버에 보관 된 데이터는 디스크에 저장되지 않고 (RAM에만 저장됩니다. 즉, 데이터의 지속성은 없습니다), RAM 캐시는 항상 백업 저장소 (MySQL 데이터베이스)에서 채워집니다 . memcached 서버에 장애가 발생했을 경우 항상 MySQL 데이터베이스에서 데이터를 복구 할 수 있습니다.