설치가 완료된 후 memcached는 /usr/bin/memcached에 있어야 합니다. 3. memcached 데몬을 실행합니다. memcached 데몬을 실행하는 것은 매우 간단합니다. 구성 파일을 수정할 필요가 없습니다(수정할 구성 파일이 없음): /usr/bin/memcached - d -m 128 -l 192.168.1.1 -p 11211 -u httpd 매개변수 설명: -d는 데몬 모드에서 memcached를 실행합니다. -m은 memcached가 사용할 수 있는 메모리 크기를 M 단위로 설정합니다. -l은 모니터링 IP 주소를 설정합니다. 로컬 시스템인 경우 일반적으로 이 매개변수를 설정할 필요가 없습니다. -p는 청취 포트를 설정하고 기본값은 11211이므로 이 매개변수를 설정할 필요가 없습니다. -u는 사용자를 지정합니다. 현재 루트인 경우 이 매개변수를 사용하여 사용자를 지정해야 합니다. 물론, 사용할 수 있는 다른 매개변수도 있습니다. man memcached를 실행하면 해당 매개변수를 볼 수 있습니다. 3. memcached의 작동 원리: 첫째, memcached는 하나 이상의 서버에서 데몬으로 실행되며 언제든지 클라이언트 연결 작업을 허용합니다. 현재 알려진 클라이언트 API에는 Perl/PHP/Python이 포함됩니다. /루비/자바/C#/C 등 PHP와 같은 클라이언트가 memcached 서비스와 연결을 설정한 후 다음으로 해야 할 일은 개체에 액세스하는 것입니다. 액세스된 각 개체에는 고유한 식별자 키가 있습니다. 액세스 작업은 이 키를 통해 수행되고 memcached에 있는 개체는 실제로 메모리에 저장됩니다. , 캐시 파일에 저장되지 않으므로 memcached가 매우 효율적이고 빠를 수 있습니다. 이러한 개체는 영구적이지 않으며 서비스가 중지되면 내부 데이터가 손실된다는 점에 유의하세요. 4. PHP를 Memcached 클라이언트로 사용하는 방법에는 두 가지가 있습니다. PHP를 memcached 클라이언트로 사용하여 객체 액세스 작업을 위한 memcached 서비스를 호출할 수 있습니다. 먼저 PHP에는 memcache라는 확장이 있습니다. Linux에서 컴파일할 때 Windows에서는 php.ini에서 php_memcache.dll 앞에 있는 주석을 제거해야 합니다. 그게 가능하다고요. 그 외에도 확장 및 재컴파일로 인한 문제를 피하는 또 다른 방법이 있는데, 바로 php-memcached-client를 직접 사용하는 것입니다. 이 기사에서는 두 번째 방법을 사용합니다. 확장 라이브러리에 비해 효율성은 약간 떨어지지만 큰 문제는 아닙니다. 4. PHP memcached 애플리케이션 예시 먼저 memcached-client.php를 다운로드한다. memcached-client.php를 다운로드한 후, 이 파일에 있는 "memcached" 클래스를 통해 memcached 서비스를 운용할 수 있다. 실제로 사용되는 코드 호출은 매우 간단합니다. add(), get(), replacement() 및 delete() 메소드 설명은 다음과 같습니다. add ($key, $val, $exp = 0 ) memcached에 객체 쓰기 $key는 객체의 고유 식별자입니다. $val은 만료 시간(초)입니다. 객체의 고유 식별자 $key를 통해 memcached에서 객체 데이터를 얻습니다. 교체($key, $value, $exp=0) $value를 사용하여 memcached의 식별자 $key로 바꾸십시오. 매개변수는 $key 객체가 존재하는 경우에만 작동합니다($key, $time = 0). memcached에서 $key 식별자를 가진 객체를 삭제합니다. $time은 삭제 전 대기 시간을 나타내는 선택적 매개변수입니다. 다음은 식별자 'mykey'를 사용하여 객체 데이터에 액세스하는 간단한 테스트 코드입니다.
실제 응용에서는 데이터베이스 쿼리의 결과 집합을 대개 memcached에 저장하고, 다음에 접근할 때 데이터베이스 쿼리 작업을 수행하는 대신 memcached에서 직접 가져오므로 데이터베이스에 대한 부담을 줄일 수 있습니다. 상당히. 일반적으로 SQL 문 md5() 뒤의 값이 고유 식별자 키로 사용됩니다. 다음은 데이터베이스 쿼리 결과 집합을 캐시하기 위해 memcached를 사용하는 예입니다(이 코드 조각은 위의 샘플 코드 바로 뒤에 나옵니다).
그렇다면 사용자 SESSION 만료 시간을 해결하는 방법은 무엇일까요? memcached의 add() 메소드에는 만료 시간 매개변수 $exp가 있다는 것을 기억하십니까? 이 매개변수 값을 SESSION의 최대 생존 시간보다 작게 설정하면 됩니다. 또한, 항상 온라인 상태인 사용자를 위해 SESSION 기간을 연장하는 것을 잊지 마세요. 이는 write() 메소드로 해결될 수 있으며, 시간을 판단하여 조건이 충족되면 데이터베이스 데이터가 업데이트됩니다. php memcached 클라이언트 memcached Memcache를 설치할 때 memcached 클라이언트가 memcache라고 언급한 적이 있습니다. 실제로 memcached라는 libmemcached 기반 클라이언트가 더 좋고 더 많은 기능을 가지고 있다고 합니다. memcache 공식 홈페이지: http://pecl.php.net/package/memcache Memcached 공식 홈페이지: http://pecl.php.net/package/memcached 다음은 Memcached 버전의 PHP 모듈을 설치하는 과정 기록입니다.
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. hash(key) 결과에 따라 나머지 모듈 연결 개수에 따라 어떤 노드를 저장할지 결정합니다. 즉, hash(key)% session.size() 이 알고리즘은 간단하고 빠르며 성능이 좋습니다. 하지만 이 알고리즘에는 단점이 있습니다. 즉, memcached 노드를 추가하거나 삭제하면 원래 캐시된 데이터가 대규모로 무효화되고, 노드와 캐시된 데이터가 많을 경우 적중률에 큰 영향을 미치게 됩니다. 캐시를 재구축하는 데 드는 비용이 너무 높으므로 두 번째 알고리즘을 사용합니다. 2. 일관된 해싱, 일관된 해싱 알고리즘, 노드 검색 프로세스는 다음과 같습니다. 먼저 memcached 서버(노드)의 해시값을 찾아 0부터 232까지 원(연속체)에 구성합니다. 그런 다음 동일한 방법을 사용하여 데이터가 저장되어 있는 키의 해시 값을 찾아 원에 매핑합니다. 그런 다음 데이터가 매핑된 위치부터 시계방향으로 검색하여 가장 먼저 발견된 서버에 데이터를 저장합니다. 2의 32제곱을 초과한 후에도 여전히 서버를 찾을 수 없으면 첫 번째 memcached 서버에 저장됩니다. Memcache는 구성 없이 첫 번째 방법을 사용합니다. 첫 번째 방법을 구현하기 위해 memcached는 다음을 사용하는 것 같습니다(확인되지 않음). $md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC); 두 번째 일관된 해싱 알고리즘: Memcache가 php.ini에 추가되었습니다. Memcache.hash_strategy =일관적 Memcache.hash_function =crc32Memcached가 프로그램에 추가되었습니다(확정되지 않음). $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); |