• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 1. Oracle VM Template for MySQL Enterprise
    2. DRBD/Pacemaker/Corosync/Oracle Linux 사용
    3. Windows 장애 조치 클러스터링 사용
    4. Amazon EC2 인스턴스의 MySQL의 사용
    5. ZFS 복제 사용
    6. MySQL과 memcached의 병용
    1. memcached 설치
    2. memcached 사용
    3. memcached 응용 프로그램 개발
    1. memcached의 기본 조작
    2. MySQL 캐시 레이어로 memcached 사용
    3. C 및 C ++에서 libmemcached 사용
    4. Perl에서 MySQL과 memcached 사용
    5. Python에서 MySQL과 memcached 사용
    6. PHP와 MySQL과 memcached 사용
    7. Ruby에서 MySQL과 memcached 사용
    8. Java에서 MySQL과 memcached 사용
    9. memcached의 TCP 텍스트 프로토콜 사용
    4. memcached 통계의 취득
    5. memcached의 FAQ
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

16.6.3.9 memcached의 TCP 텍스트 프로토콜 사용

memcached 서버와의 통신은 TCP 또는 UDP 프로토콜을 통해 실현됩니다. TCP 프로토콜을 사용하면 간단한 텍스트 기반의 인터페이스를 사용하여 정보를 교환 할 수 있습니다.

memcached와 통신 할 때 서버에 구성된 포트를 사용하여 서버에 연결할 수 있습니다. 서버와의 연결을 열 때 인증이나 로그인은 필요 없습니다. 연결 한 직후부터 서버에 명령 전송을 시작할 수 있습니다. 완료 한 때에는 특별한 절단 명령을 전송하지 않고 연결을 종료 할 수 있습니다. 클라이언트는 대기 시간을 단축하고 성능을 향상시키기 위해 연결을 열린 상태로 유지하는 것이 좋습니다됩니다.

데이터는 2 가지 형태로 memcached 서버로 전송됩니다.

  • 서버에 명령을 전송하고 서버로부터 응답을 수신하는 데 사용되는 텍스트 행.

  • 특정 키에 대한 값의 정보를주고받는 데 사용되는 비정형 데이터. 데이터를 수신했을 때와 동일한 형식으로 클라이언트에 반환됩니다.

텍스트 줄 (명령 및 응답) 및 구조화되지 않은 데이터는 모두 항상 문자열 \r\n 종료합니다. 저장된 데이터에이 시퀀스가​​ 포함되어있을 수 있기 때문에 (비정형 데이터가 전송되기 전에 클라이언트에서 반환 된) 데이터의 길이를 사용하여 데이터의 끝이 특정되어야 입니다.

서버에 대한 명령은 작업에 따라 구조화되어 있습니다.

  • 저장 명령 : set , add , replace , append , prepend , cas

    서버에 대한 저장 명령은 다음의 형식을 취합니다.

    command key [flags] [exptime] length [noreply]
    

    또는 비교 앤드 스왑 (CAS)를 사용하는 경우 :

    cas key [flags] [exptime] length [casunique] [noreply]
    

    여기에서 :

    • command : 명령 이름.

      • set : 키에 대한 값을 저장합니다

      • add : 키가 아직 존재하지 않는 경우에 그 키에이 값을 저장합니다

      • replace : 키가 이미 존재하는 경우에 그 키에이 키를 저장합니다

      • append : 지정된 키 값의 끝에 지정된 값을 추가합니다. flags 및 exptime 인수는 사용하지 마십시오.

      • prepend : 지정된 키의 지정된 값의 끝에 캐시의 현재 값을 추가합니다. flags 및 exptime 인수는 사용하지 마십시오.

      • cas : 지정된 casunique 이 일치하는 경우에만 지정된 키를 지정된 값으로 설정합니다. 이것은 자신이 마지막으로 정보를 가져 오는 이후 어떤 사용자도 해당 정보를 업데이트하지 않은 경우, 그 정보를 변경하는 것과 실질적으로 동등합니다.

    • key : 키. 모든 데이터는 특정 키를 사용하여 저장됩니다. 키에 제어 문자와 공백을 포함 할 수 없습니다. 키의 최대 크기는 250 자입니다.

    • flags : 작업 플래그 (정수). memcached 플래그는 투명합니다. memcached 서버는 플래그의 내용을 무시합니다. 이들은 클라이언트가 정보의 유형을 나타내는 데 사용합니다. memcached 1.2.0 이전 버전에서는이 값은 16 비트 정수 값입니다. memcached 1.2.1 이상에서이 값은 32 비트 정수입니다.

    • exptime : 만료 시간 (만료가없는 경우 0).

    • length : 지정된 값 블록의 길이 (바이트 단위 종단의 \r\n 문자 제외).

    • casunique : 기존 항목의 고유의 64 비트 값. 이것은 기존의 값과 비교하는 데 사용됩니다. cas 업데이트를 게시 할 때 gets 명령에서 반환 된 값을 사용합니다.

    • noreply : 명령에 응답하지 않도록 서버에 지시합니다.

    예를 들어, 값 abcdef 키 xyzkey 에 저장하려면 다음을 사용합니다.

    set xyzkey 0 0 6\r\nabcdef\r\n
    

    서버에서 반환 값은 상태 또는 오류 정보를 나타내는 한 줄입니다. 자세한 내용은 표 16.3 "memcached 프로토콜의 응답" 을 참조하십시오.

  • 검색 명령 : get , gets

    검색 명령은 다음의 형식을 취합니다.

    get key1 [key2 .... keyn]
    gets key1 [key2 ... keyn]
    

    요구하는 각 키를 공백으로 구분하여 여러 개의 키를 명령에 지정할 수 있습니다.

    서버는 다음과 같은 형식의 정보 행에 응답합니다.

    VALUE key flags bytes [casunique]
    

    여기에서 :

    • key : 키 이름.

    • flags : 값을 저장하면 memcached 서버에 제공된 플래그 정수 값.

    • bytes : 저장되어있는 값의 크기 (종단의 \r\n 문자 시퀀스 제외).

    • casunique : 항목을 식별하는 고유의 64 비트 정수입니다.

    정보 행의 직후에 값​​ 데이터 블록이 계속됩니다. 예 :

    get xyzkey\r\n
    VALUE xyzkey 0 6\r\n
    abcdef\r\n
    

    여러 키를 요구하는 경우는 발견 된 키에 대해 정보 행과 데이터 블록을 반환합니다. 요청 된 키가 캐시에 존재하지 않는 경우 정보는 반환되지 않습니다.

  • 삭제 명령 : delete

    삭제 명령은 다음의 형식을 취합니다.

    delete key [time] [noreply]
    

    여기에서 :

    • key : 키 이름.

    • time : 클라이언트가 서버에이 키 add 또는 replace 명령을 거부하라는 초 단위의 시간 (또는 특정 Unix 시간). 이 기간 동안 모든 add , replace , get 및 gets 명령이 실패합니다. set 작업이 성공합니다. 이 기간이 지나면 그 키는 영구적으로 삭제되고 모든 명령이 허용됩니다.

      지정하지 않으면이 값은 0 (즉시 삭제)로 간주됩니다.

    • noreply : 명령에 응답하지 않도록 서버에 지시합니다.

    이 명령에 대한 응답은 키가 성공적으로 제거 된 것을 나타내는 DELETED 하거나 지정된 키를 찾지 못했음을 나타내는 NOT_FOUND 중 하나입니다.

  • 증가 / 감소 : incr , decr

    증가 및 감소 명령은 개별 취득 / 설정 순서를 실행하지 않고 서버의 키 값을 변경합니다. 이러한 작업은 현재 저장되어있는 값이 64 비트 정수임을 전제로하고 있습니다. 저장되어있는 값이 64 비트 정수가 아닌 경우는 증가 또는 감소 작업을 적용하기 전에 그 값이 0으로 간주됩니다.

    증가 및 감소 명령은 다음의 형식을 취합니다.

    incr key value [noreply]
    decr key value [noreply]
    

    여기에서 :

    • key : 키 이름.

    • value : 증가 및 감소로 사용되는 정수입니다.

    • noreply : 명령에 응답하지 않도록 서버에 지시합니다.

    응답은 다음과 같습니다.

    • NOT_FOUND : 지정된 키를 찾을 수 없습니다.

    • value : 지정된 키에 관련 지을 수 있었던 새로운 값.

    값은 부호없는 것으로 간주됩니다. decr 작업은 값이 0 미만으로 감 분하는 것은 아닙니다. incr 작업은 64 비트의 최대 값으로 값이 되풀이합니다.

  • 통계 명령 : stats

    stats 명령은 memcached 인스턴스의 현재 상태와 거기에 저장되어있는 데이터에 대한 자세한 통계 정보를 제공합니다.

    통계 명령은 다음의 형식을 취합니다.

    STAT [name] [value]
    

    여기에서 :

    • name : 반환되는 통계의 이름 (옵션). 지정하지 않은 경우, 일반 통계가 반환됩니다.

    • value : 특정 통계 작업을 수행 할 때 사용되는 특정 값.

    반환 값은 다음과 같이 포맷 된 통계 데이터의 목록입니다.

    STAT name value
    

    통계는 END 라는 한 줄로 종료합니다.

    자세한 내용은 섹션 16.6.4 "memcached 통계 가져 오기" 를 참조하십시오.

참조를 위해 지원되는 각종 명령과 형식의 목록을 보여줍니다.

표 16.2 memcached 명령 참조

명령 명령 형식
set set key flags exptime length , set key flags exptime length noreply
add add key flags exptime length , add key flags exptime length noreply
replace replace key flags exptime length , replace key flags exptime length noreply
append append key length , append key length noreply
prepend prepend key length , prepend key length noreply
cas cas key flags exptime length casunique , cas key flags exptime length casunique noreply
get get key1 [key2 ... keyn]
gets
delete delete key , delete key noreply , delete key expiry , delete key expiry noreply
incr incr key , incr key noreply , incr key value , incr key value noreply
decr decr key , decr key noreply , decr key value , decr key value noreply
stat stat , stat name , stat name value

서버에 명령을 전송하면 서버에서 응답은 다음 표에 나와있는 설정 중 하나입니다. 서버의 응답 값은 모두 \r\n 종료합니다.

표 16.3 memcached 프로토콜 응답

문자열 설명
STORED 값이 성공적으로 저장되었습니다.
NOT_STORED 값이 저장되지 않았지만 오류가 발생하지 않습니다. 값을 추가하거나 (있는 경우) 업데이트하는 명령 ( add 와 replace ) 또는 항목이 이미 삭제하도록 설정되어있는 경우 명령에 대응합니다.
EXISTS cas 명령을 사용하면 저장하려고하는 항목이 이미 존재하고 마지막 검사 이후에 변경되어 있습니다.
NOT_FOUND 저장, 갱신 또는 삭제하려고하는 항목이 없거나 이미 삭제되어 있습니다.
ERROR 존재하지 않는 명령어를 전송했습니다.
CLIENT_ERROR errorstring 입력 행에 오류가있었습니다. 자세한 내용은 errorstring 에 포함되어 있습니다.
SERVER_ERROR errorstring 서버에 오류가 있었기 때문에 정보를 반환 할 수 없습니다. 극단적 인 경우에는이 오류가 발생하면 서버가 클라이언트로부터 연결 될 수 있습니다.
VALUE keys flags length 요청 된 키를 찾을 저장되어있는 key , flags 및 데이터 블록이 지정된 length 로 반환됩니다.
DELETED 요청 된 키가 서버에서 삭제되었습니다.
STAT name value 통계 데이터의 행.
END 통계 데이터 끝.


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved