1. 소개 및 설치
Memcached는 고성능 분산 메모리 개체 캐싱 시스템으로, 일반적으로 동적 웹 애플리케이션의 응답 속도를 향상시키기 위해 데이터베이스 로딩 압력을 줄이는 데 사용됩니다.
이 확장은 libmemcached 라이브러리에서 제공하는 API를 사용하여 memcached 서버와 상호 작용합니다. 또한 세션 핸들러(memcached)도 제공합니다.
memcached 설치에 대해서는 Ubuntu에서 memcached 설치 및 구성 문서를 참조하세요.
PHP 확장 memcached를 설치하기 전에 libmemcached를 설치해야 합니다. libmemcached는 memcached의 C/C++ 로컬 클라이언트 라이브러리입니다.
libmemcached를 설치하기 전에 먼저 libcloog-ppl0을 설치해야 합니다. 그렇지 않으면 컴파일 및 설치 프로세스 중에 오류가 발생합니다.
sudo apt-get install libcloog-ppl0
그런 다음 http://libmemcached에서 다운로드하세요. org/libMemcached.html 지정된 디렉터리에 필요한 libmemcached 소스 코드 설치 패키지의 압축을 풀고 디렉터리를 입력한 후 다음 지침을 실행합니다.
./configure --prefix=/usr/local/libmemcached make sudo make install
그런 다음 필요한 PHP memcached 확장을 다운로드할 수 있습니다. 여기에서 소스 코드 설치 패키지: http://pecl.php.net/package/memcached, 지정된 디렉터리에 압축을 풀고 해당 디렉터리에 들어간 후 다음 지침을 실행하십시오.
phpize ./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached make sudo make install
오류 설치 프로세스 중에 보고될 수 있습니다.
未知类型名称:memcached_server_instance_st
으로 인해 make가 실패합니다. 해결 방법은 다음과 같습니다.
memcached 확장 압축 해제 디렉터리: php_libmemcached_compat.h에서 이 파일을 찾은 다음 다음 줄을 추가하세요
typedef const struct memcached_server_st *memcached_server_instance_st;
다시 만들면 괜찮을 것입니다.
설치 성공 후 php.ini에 확장명=memcacached를 추가한 후 Apache를 다시 시작하고 phpinfo를 확인한 후 다음 섹션을 확인하세요
설치가 성공적으로 완료되었음을 증명합니다.
2. 시간 초과
일부 저장소 명령에는 서버로 전송될 때 만료 값(요소 또는 클라이언트 작업 요청과 관련)이 포함됩니다. 이러한 모든 용도에 대해 전송되는 실제 값은 Unix 타임스탬프(1970년 1월 1일부터 만료 시간까지의 정수 시간(초))이거나 지금부터의 시간(초)일 수 있습니다. 후자의 경우 이 초 수는 60×60×24×30(30일의 초)을 초과할 수 없습니다. 유효하지 않은 값이 이 값보다 크면 서버는 이를 실제 Unix 타임스탬프로 처리합니다. 현재 시간.
만료 값이 0(기본값)으로 설정되면 요소는 만료되지 않습니다(그러나 다른 새 요소에 공간을 할당하기 위해 서버에서 삭제될 수 있음).
3. 콜백
1. 결과 콜백
결과 콜백 메소드는 Memcached::getDelayed() 또는 Memcached::getDelayedBykey()를 통해 요소를 얻은 후의 결과입니다. 메서드 집합의 각 요소에 대해 한 번씩 호출됩니다. 콜백 함수는 배열로 설명된 Memcached 개체 및 요소 정보를 받을 수 있습니다. 이 콜백 함수는 정보를 반환할 필요가 없습니다.
예제 #1 결과 콜백 예
<?php $m = new Memcached(); $m->addServer('localhost', 11211); $items = array( 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3' ); $m->setMulti($items); $m->getDelayed(array('key1', 'key3'), true, 'result_cb'); function result_cb($memc, $item) { var_dump($item); } ?>
위 루틴의 출력은 다음과 유사합니다.
array(3) { ["key"]=> string(4) "key1" ["value"]=> string(6) "value1" ["cas"]=> float(49) } array(3) { ["key"]=> string(4) "key3" ["value"]=> string(6) "value3" ["cas"]=> float(50) }
2. 캐시 콜백을 통해 읽습니다.
읽기 캐시 콜백은 서버에서 요소가 검색되지 않을 때 호출됩니다. 이 콜백 함수는 Memcached 객체, 요청된 키, 참조로 전달된 값 변수라는 세 가지 매개변수를 받습니다. 이 콜백 함수는 true 또는 false를 반환하여 키에 값이 없을 때 기본값을 설정하도록 결정하는 역할을 담당합니다. 콜백이 true를 반환하면 Memcached는 "발신 매개변수"(참조로 전달된 값 변수)에 저장된 값을 memcached 서버에 저장하고 이를 원래 호출 함수에 반환합니다. Memcached::get() 및 Memcached::getByKey()만이 이러한 유형의 콜백을 지원합니다. 왜냐하면 Memcache 프로토콜은 여러 키를 요청할 때 검색되지 않은 키에 대한 정보 제공을 지원하지 않기 때문입니다. 예제 #2 콜백을 통한 읽기 예<?php $m = new Memcached(); $m->addServer('localhost', 11211); $profile_info = $m->get('user:'.$user_id, 'user_info_cb'); function user_info_cb($memc, $key, &$value) { $user_id = substr($key, 5); /* 从数据库读取个人信息 */ /* ... */ $value = $profile_info; return true; } ?>4. 세션 지원memcached는 사용자 세션 데이터를 memcached 서버에 저장하는 데 사용할 수 있는 맞춤형 세션 프로세서를 제공합니다. . 내부적으로는 완전히 별도의 Memcached 인스턴스가 사용되므로 필요한 경우 다른 서버 풀을 설정할 수 있습니다. 세션 키는 memc.sess.key라는 접두사 아래에 저장됩니다. 따라서 세션과 일반 캐싱에 동일한 서버 풀을 사용하는 경우 이 점에 유의하시기 바랍니다. 주석: 세션이 일반 캐시와 분리되는 또 다른 이유는 일반 캐시가 memcached 서버를 가득 채울 때 세션이 캐시에서 쫓겨나고 사용자의 연결이 알 수 없는 이유로 끊어질 수 있다는 것입니다. session.save_handler는 memcached의 세션 프로세서를 활성화하기 위해 memcached로 설정됩니다. session.save_path는 쉼표로 구분된 호스트 이름:포트 스타일 세션 캐시 서버 풀을 정의합니다(예: "sess1:11211, sess2:11211").5. Memcached 클래스 는 memcached 서비스를 나타냅니다. 클러스터 연결. Memcached::add — 새 키에 요소 추가 Memcached::addByKey — 지정된 서버의 새 키에 요소 추가 Memcached::addServer — 서버 풀에 서버 추가
Memcached::addServers — 서버 풀에 여러 서버 추가
Memcached::append — 기존 요소에 데이터 추가
Memcached::appendByKey — 지정된 서버에 데이터 추가 데이터 추가 요소가 존재한 후
Memcached::cas — 값 비교 및 교환
Memcached::casByKey — 지정된 서버의 값 비교 및 교환
Memcached::__construct — Memcached 인스턴스 생성
Memcached::decrement — 숫자 요소의 값 감소
Memcached::decrementByKey — 특정 서버에 저장된 숫자 항목의 값 감소
Memcached: :delete — 요소 삭제
Memcached::deleteByKey — 지정된 서버에서 요소 삭제
Memcached::deleteMulti — 여러 항목 삭제
Memcached::deleteMultiByKey — 특정 서버에서 여러 항목 삭제
Memcached::fetch — 다음 결과 가져오기
Memcached::fetchAll — 남은 결과 모두 가져오기
Memcached::flush — 무효화 캐시의 모든 요소
Memcached::get — 요소 검색
Memcached::getAllKeys — 모든 서버에 저장된 키 가져오기
Memcached::getByKey — 요소 검색 지정된 서버에서
Memcached::getDelayed — 지정된 서버에서 여러 요소 요청
Memcached::getDelayedByKey — 지정된 서버에서 여러 요소 요청
Memcached:: getMulti — 여러 요소 검색
Memcached::getMultiByKey — 특정 서버에서 여러 요소 검색
Memcached::getOption — Memcached의 옵션 값 가져오기
Memcached::getResultCode — 마지막 작업의 결과 코드 반환
Memcached::getResultMessage — 마지막 작업의 결과 설명 메시지 반환
Memcached::getServerByKey — 키로 매핑된 서버 정보 가져오기
Memcached::getServerList — 서버 풀의 서버 목록 가져오기
Memcached::getStats — 서버 풀의 통계 가져오기
Memcached::getVersion — 모든 버전 가져오기 서버 풀 정보
Memcached::increment — 숫자 요소의 값 증가
Memcached::incrementByKey — 특정 서버에 저장된 숫자 항목의 값 증가
Memcached::isPercious — Memcache에 대한 영구 연결이 사용되고 있는지 확인
Memcached::isPristine — 인스턴스가 최근에 생성되었는지 확인
Memcached::prepend — 데이터를 맨 앞에 추가 기존 요소
Memcached::prependByKey — 특정 서버의 기존 항목 앞에 데이터 추가
Memcached::quit — 열려 있는 모든 연결 닫기
Memcached::replace — 키 요소 아래의 기존 항목 교체
Memcached::replaceByKey — 특정 서버의 기존 키 아래 항목 교체
Memcached::resetServerList — 서버 목록에서 모든 서버 삭제
Memcached:: set — 요소 저장
Memcached::setByKey — 특정 서버에 항목 저장
Memcached::setMulti — 여러 요소 저장
Memcached ::setMultiByKey — 특정 서버에 여러 항목 저장
Memcached::setOption — Memcached 옵션 설정
Memcached::setOptions — Memcached 옵션 설정
Memcached::setSaslAuthData — 인증에 사용할 자격 증명 설정
Memcached::touch — 항목에 새 만료 설정
Memcached::touchByKey — 특정 서버의 항목에 새 만료 설정