> 백엔드 개발 > PHP 튜토리얼 > memcached PHP memcached 클라이언트 memcached

memcached PHP memcached 클라이언트 memcached

WBOY
풀어 주다: 2016-07-29 08:45:33
원래의
872명이 탐색했습니다.

memcache 공식 홈페이지: http://pecl.php.net/package/memcache
memcached 공식 홈페이지: http://pecl.php.net/package/memcached
다음은 PHP 버전입니다. 모듈 프로세스 기록을 위해 Memcached를 설치했습니다:
wget http://download.tangent.org/libmemcached-0.48.tar.gz
tar zxf libmemcached-0.48.tar.gz
cd libmemcached-0.48
./ 구성 --prefix=/usr/local/libmemcached --with-memcached
make
make install
wget http://pecl.php.net/get/memcached-1.0.2. tgz
tar zxf memcached-1.0.2.tgz
cd memcached-1.0.2
/usr/local/webserver/php/bin/phpize
./configure --enable-memcached -- with-php -c/local/webserver/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached
make
make install
php에
확장 기능 추가 .ini =memcached.so
완료
기타:
libmemcached를 설치할 때 ./configure만 사용하는 경우 다음 메시지가 표시될 수 있습니다.
memcached 확인 중… 아니요
configure: 오류: “memcached 바이너리를 찾을 수 없습니다.”
둘은 사용법이 거의 동일합니다.

코드 복사 코드는 다음과 같습니다.


$mem = new Memcache
$mem->addServer; ($memcachehost , '11211');
$mem->addServer($memcachehost, '11212')
$mem->set('hx','9enjoy')
echo $mem- >get('hx');


코드 복사 코드는 다음과 같습니다.


$md = new Memcached;
$servers = array(
array($memcachehost, '11211'),
array($memcachehost, '11212')
); $md->addServers($servers);
$md->set('hx','9enjoy')
echo $md->get('hx'); 🎜>
memcached getMulti, getByKey, addServers 등과 같이 memcache보다 더 많은 메소드가 있습니다.
Memcached에는 Memcache의 연결 방식이 없으며 현재 긴 연결을 지원하지 않습니다.

Memcached는 바이너리 프로토콜을 지원하지만 Memcache는 지원하지 않습니다. 즉, Memcached의 성능이 더 높아집니다.
Memcache는 기본적으로 구현되며 OO 인터페이스와 비 OO 인터페이스의 공존을 지원합니다. memcached는 libmemcached를 사용하고 OO 인터페이스만 지원합니다.
자세한 차이점: http://code.google.com/p/memcached/wiki/PHPClientComparison
memcached 서버는 중앙 집중식 캐싱 시스템이며 분산 구현 방법은 클라이언트에 의해 결정됩니다.
Memcached 배포 알고리즘에는 일반적으로 두 가지 옵션이 있습니다.
1. 해시(키) 결과에 따라 나머지 모듈 연결 수에 따라 저장할 노드, 즉 해시(키)% 세션이 결정됩니다. size(), 이 알고리즘은 간단하고 빠르며 성능이 좋습니다. 하지만 이 알고리즘에는 단점이 있습니다. 즉, memcached 노드를 추가하거나 삭제하면 원래 캐시된 데이터가 대규모로 무효화되고, 노드와 캐시된 데이터가 많을 경우 적중률에 큰 영향을 미치게 됩니다. 캐시를 재구축하는 데 드는 비용이 너무 높으므로 두 번째 알고리즘을 사용합니다.
2. 일관된 해싱, 일관된 해싱 알고리즘의 노드 검색 과정은 다음과 같습니다.
먼저 memcached 서버(노드)의 해시 값을 찾아 0~232 상위의 원(연속체)으로 구성합니다. . 그런 다음 동일한 방법을 사용하여 데이터가 저장되어 있는 키의 해시 값을 찾아 원에 매핑합니다. 그런 다음 데이터가 매핑된 위치부터 시계방향으로 검색하여 가장 먼저 발견된 서버에 데이터를 저장합니다. 2의 32제곱을 초과한 후에도 여전히 서버를 찾을 수 없으면 첫 번째 memcached 서버에 저장됩니다.
Memcache는 아무런 구성 없이 첫 번째 방법을 사용합니다. 첫 번째 방법을 구현하기 위해 memcached는 다음을 사용하는 것 같습니다(확인되지 ​​않음):
$md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC)
두 번째 일관된 해시 알고리즘:
memcache add



php.ini의

코드를 복사하세요. 코드는 다음과 같습니다: Memcache.hash_strategy =consilient

Memcache .hash_function =crc32



프로그램에 memcached 추가(미확인)



코드 복사

코드는 다음과 같습니다.$md->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);

$md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC); $mem->setOption(Memcached::OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT);

$mem->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE,true);
일부 참고 문서:
memcached 배포 테스트 보고서(일관적인 해싱의 경우 해시 함수 선택):
http://www.iteye.com/topic/346682
php 모듈 memcache 차이점 memcached 포함: http://www.jb51.net/article/27366.htm
PHP 모듈: Memcached > Memcache: http://www.jb51.net/article/27367.htm
20110509@ @ 업데이트:
libmemcached를 설치하면 다음 오류 메시지가 나타납니다.
make[2]: *** [clients/ms_conn.o] Error 1
make[2]: Leaving Directory `/www/ Soft/ libmemcached-0.48'
make[1]: *** [all-recursive] 오류 1
make[1]: `/www/soft/libmemcached-0.48' 디렉토리를 떠나는 중
make: * ** [모두] 오류 2
구성 시 --disable-64bit CFLAGS="-O3 -march=i686"을 추가할 수 있습니다.
즉: ./configure --prefix=/usr/local/libmemcached --with- memcached --disable-64bit CFLAGS="-O3 -march=i686"

위 내용은 Memcached 컨텐츠를 포함하여 Memcached PHP의 Memcached 클라이언트인 Memcached를 소개한 내용이므로 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿