>백엔드 개발 >PHP 튜토리얼 >php_php 기술에 따른 Memcached 항목 예제 분석

php_php 기술에 따른 Memcached 항목 예제 분석

WBOY
WBOY원래의
2016-05-16 20:26:361351검색

이 문서에서는 PHP에서 Memcached에 대한 입문 지식과 예를 더 자세히 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 내용은 다음과 같습니다.

Memcache는 어떤 상황에서 사용되며 어떤 상황에서 사용하면 안되나요?

Memcache를 언제 사용해야 하며, 언제 사용을 피해야 합니까? 이제 당신은 memcahced가 데이터베이스 튜토리얼 측면의 부담을 줄이기 위해 설계되었다는 것을 이미 알고 있지만, memcached가 성능에 가장 큰 영향을 미치는 쿼리를 최대한 많이 캐시하도록 하는 방법을 찾는 좋은 전략을 개발하는 것이 좋습니다. 애플리케이션의 모든 쿼리에 대한 일부 실행 시간 로그는 어떤 콘텐츠를 캐시해야 하는지 분석하는 데 도움이 될 수 있습니다.

이제 전자상거래 웹사이트를 운영한다고 가정해 보겠습니다. 제품 소개, 배송 정보 또는 복잡한 쿼리가 필요한 기타 데이터를 memcached 등에 캐시할 수 있습니다. 제품 페이지가 로드되면 위에서 언급한 데이터가 건너뛰게 됩니다. 캐시는 웹사이트의 전반적인 성능을 크게 변화시킬 수 있습니다. 백그라운드에서 제품을 업데이트할 때 이러한 캐시를 업데이트하는 것만 기억하면 됩니다.

어떤 경우에는 데이터를 캐싱하는 것이 좋지 않습니다. 예를 들어 데이터가 자주 업데이트되면 데이터가 업데이트될 때마다 동시에 캐시를 업데이트해야 하므로 캐시 적중률이 높지 않습니다. 이로 인해 추가적인 성능 저하가 발생할 수 있습니다. 이 경우 데이터베이스를 직접 쿼리하는 것이 더 나을 수 있습니다.

memcached의 보안

memcached의 작동 프로세스를 이해했다면 캐시에 액세스하는 과정에서 권한 제어와 관련된 프로세스가 없다는 것을 알 수 있을 것입니다. 데이터가 그다지 중요하지 않다면 걱정할 필요가 없습니다. 보안 문제가 있는 경우 다음 사항을 참고하면 더욱 완벽하게 사용할 수 있습니다.

고유 키 사용: memcached의 데이터는 대규모 배열 형태로 존재하기 때문에 데이터에 접근할 수 있는 유일한 방법은 데이터를 저장하는 것뿐입니다. 당시에는 키를 쿼리할 수 있는 다른 방법이 없습니다.

데이터 암호화: Memcached에 데이터와 키를 암호화된 방식으로 저장할 수 있습니다. 이를 위해서는 약간의 CPU 시간이 필요하지만, 상황이 허락한다면 데이터 보안을 위해 이 방법을 시도해 볼 가치가 있습니다. .


코드 복사 코드는 다음과 같습니다. 클래스 마이캐시
{
비공개 $캐시
함수 __construct()
{
$this->cache = 새로운 memcache()
// localhost를 memcached 서버 IP 주소와 포트 번호로 바꿀 수 있습니다.
$this->cache->connect('localhost', 10987)
}

함수 get_data($key)
{
$data = $this->캐시->get($key)
If($data != null)
$data 반환
그렇지 않으면
{
If($this->cache->getresultcode() == memcached::res_notfound)
          {
//여기서 데이터베이스 쿼리를 수행하고 데이터를 가져옵니다
            $this->cache->set($key,$data_returned_from_database)
        }
       그 외
          {
​​​​ error_log('키에 대한 데이터 없음'.$key)
        }
}
}
}
$캐시 = mycache()
$cache->get_data('foo')
?>


이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.