memcache 대 memcached?


76

memcached를 사용하고 싶습니다

http://www.danga.com/memcached/

나는 그것을 통해 설치했다 yum install memcached

그러나 이제 PHP에 연결해야하며 memcache라는 확장명과 memcached라는 확장명이 있습니까? ARGH

http://us3.php.net/manual/en/book.memcache.php
http://us3.php.net/manual/en/book.memcached.php

누군가 나를 여기서 올바른 방향으로 안내 할 수 있습니까? 어느 쪽이 효과가 있습니까?

또한 로컬 인 경우에도 작동하려면 포트를 열어야합니까? 그것을 실행 한 후 telnet 127.0.0.1 11211을 시도하고 연결이 거부됩니다.


24
이 질문을 지금보고있는 경우 허용되는 답변이 잘못되었음을 명심하십시오 . 이름만으로 솔루션을 선택하는 것은 위험합니다. 특히 이름이 더 좋은 솔루션이 더 나쁜 프로젝트 인 경우에 특히 그렇습니다. 자세한 내용은 다른 답변을 참조하십시오.
tylerl

@thanksyo 확인한 답변을 선택 취소하십시오. 그것은 더 많은 사람들이 여기 늦게 혼동 할 것입니다. 그 사이에, 나는 잘못된 답을 내리고 감사가 그것을 풀지 않을 때까지 다른 사람들도 똑같이 할 것을 제안합니다.
joedevon

답변:


24

짧은 대답 : 하나는 당신이 찾고있는 것이지만, 나의 첫 번째 선택은 순전히 명명법의 올바른 사용에 기초하여 memcache (첫 번째 목록) 입니다.

이제 내가 결론을 내리는 방법은 다음과 같습니다.

다음은 질문자에 의한 좌절을 설명하는 명명 규칙에 익숙하지 않은 사용자를위한 빠른 배경 지식입니다. 많은 * nix 응용 프로그램의 경우 백엔드 작업을 수행하는 부분을 "데몬"(Windows의 "서비스"라고 함) 인터페이스 또는 클라이언트 응용 프로그램은 데몬을 제어하거나 액세스하는 데 사용하는 것입니다. 데몬은 대개 "d"문자가 추가되어 클라이언트와 동일하게 이름이 지정됩니다. 예를 들어 "imap"은 "imapd"데몬에 연결되는 클라이언트입니다.

이 명명 규칙은 memcache 모듈에 대한 소개를 읽을 때 memcache 에 의해 명확하게 준수됩니다 (이 발췌에서 memcache와 memcached의 차이점에 주목).

Memcache 모듈은 특히 동적 웹 애플리케이션에서 데이터베이스로드를 줄 이도록 설계된 memcached의 매우 효과적인 캐싱 데몬에 편리한 절차 및 객체 지향 인터페이스를 제공합니다.

Memcache 모듈은 세션 핸들러 (memcache)도 제공합니다.

memcached에 대한 자세한 내용은» http://www.danga.com/memcached/를 참조하십시오 .

좌절은 여기에 심하게 명명 된 PHP 확장의 저자에 의해 발생 되는 memcached 는라는 실제 데몬과 같은 이름을 공유하기 때문에, memcached를을 . 공지 사항은 또한이에 (PHP 모듈) memcached를 소개 , 그것을 언급한다 libmemcached memcached를 데몬에 액세스 할 모듈에 의해 사용되는 공유 라이브러리 (또는 API)입니다 :

memcached는 본질적으로 일반적인 고성능 분산 메모리 객체 캐싱 시스템이지만 데이터베이스로드를 완화하여 동적 웹 응용 프로그램의 속도를 높이는 데 사용됩니다.

이 확장은 libmemcached 라이브러리를 사용하여 memcached 서버와 통신하기위한 API를 제공합니다. 또한 세션 처리기 (memcached)를 제공합니다.

libmemcached에 대한 정보는» http://tangent.org/552/libmemcached.html 에서 찾을 수 있습니다 .

요약하자면 둘 다 기능적으로 동일하지만 저자가 다르기 때문에 하나는 다른 저자보다 더 적절하게 명명됩니다.


70
프로젝트 이름이 실제로 하나의 구현을 다른 것으로 선택해야하는 적절한 이유입니까?
David Pashley

4
David : 확실하지는 않지만 테스트가 끝날 때까지 특정 구현을 떠나서 다른 사람을 효과적으로 선호하는 이유는 충분합니다. 필자는 여전히 사용 가능한 모든 구현을 시도하지만 저자가 소프트웨어를 설명 할 때 기술적 인 결함으로 인해 소프트웨어에 어떤 기술적 결함이 있는지 궁금해하는 경향이 있습니다. 그러나 실제 소프트웨어에 대한 귀하의 의견을 읽었으므로 귀하의 답변에 대한 공감대도 제공했습니다. :-)
Jessica McKinnon

4
나는 memcached의 "d"가 악마를 의미하는 것이 아니라 동사 캐시의 과거 분사를 의미한다고 생각하지 않았습니다. 또한 해당 인터페이스가 이미 있으므로 새 인터페이스의 이름을 "memcache"로 지정할 수 없습니다.
GetFree

9
버그의 양과 익스텐션의 활발한 개발 여부 는 문제에 대해 분석하는 것보다 훨씬 중요합니다. d. 진심으로, 당신도 마지막 때문에 그런 일 중 하나 개 확장을 테스트에 대해 생각하지 말아야, 그것은 박쥐 완전히이다
Fake51

12
Erm 기능적으로 동일 하지 않습니다. memcached예를 들어 cas 토큰을 지원합니다 memcache. 당신이 그것들을 필요로한다면, 당신은 어느 것을 고를 지 (알지 못하는지) 알고 있습니다.
Wrikken

56

PHP 클라이언트 비교 를보고 싶을 것입니다 .

짧은 버전 : 둘 다 작동하며 대부분의 경우 어느 쪽이든 잘 작동합니다.

다른 문제와 관련하여 : 그렇습니다 telnet 127.0.0.1 11211. 방화벽이 로컬 호스트와의 통신을 차단하는 방화벽은 거의 없습니다. 연결할 수없는 경우을 수행하여 memcached가 실제로 실행 중인지 확인하십시오. ps auxwww | grep memcached그러면 memcached를 시작하는 데 사용되는 명령 줄 인수도 표시됩니다. 인수 중 하나는 -p 11211다른 포트 번호 여야합니다 . man memcached가능한 모든 주장의 의미를 참조하십시오 .


2
문제 해결 단계 추가를위한 공감
Jessica McKinnon

이것은 정말로 명확한 대답입니다.
danidacar

@Nate, Windows는 ps auxwww | grep memcached무엇입니까?
Pacerier

1
@Pacerier : superuser.com/questions/415360/…을보십시오 . 프로세스 탐색기는 실행중인 프로세스를 찾고 명령 줄 인수를 보는 가장 쉬운 방법입니다.
Nate

@Pacerier이 명령은 서버 프로세스가 실행 중인지 확인하고 호출 방법을 확인합니다.
Jasen

27

Nate의 링크에서 알 수 있듯이 두 가지 모두 간단한 사용법으로 완벽하게 작동합니다. 그러나 memcached는 memcached에서 최고의 성능을 얻을 수있는 더 많은 기능을 지원합니다. 이진 프로토콜은 클라이언트와 서버간에 전송하는 데 필요한 데이터 양을 줄입니다. 멀티 겟과 멀티 셋을 사용하면 여러 항목을 동시에 가져 오거나 설정할 수 있습니다. memcache에서 더 많은 oomph가 필요한 경우 memcached가 더 나은 모듈입니다. libmemcached를 사용하면 라이브러리 자체가 PHP 전용 버전보다 더 최적화되어있을 수 있습니다.

Memcached는 8 개월 전에 릴리스 된 memcache와 비교하여 가장 최신 모듈입니다. 이전 버전의 PHP를 대상으로해야하는 경우 실제로 memcache 만 사용할 수 있습니다.


좋은 설명!
john

21

나이가 많고 버그가 php-memcache많은 것이 가장 적절한 이름으로 보이기 때문에 호출 됩니다. Digg 사람들이 독립적으로 개발 한 새롭고 더 나은 버전은 대신 php-memcached명확성을 위해 명명 되었습니다.

이름의 정확성만을 기준으로 다른 것을 선택하도록 권장하는 사람들에게는 실제로 기술적 인 조언을 제공하는 비즈니스가 없습니다.


6

최근에 php-memcache를 사용 했으므로 php-memcached를 가리켜 야합니다.

여기 머리 위로 몇 가지 이유가 있습니다 ..

1) getErrorCode () 또는 이와 동등한 메소드가 없으므로 get ()이 FALSE를 리턴하면 memcache에 저장된 값이 false인지 또는 어떤 종류의 문제가 있는지 여부를 알 수 없습니다.

2) 일관된 해싱을위한 해싱 알고리즘은 libmemcached로 구축 된 많은 클라이언트 라이브러리와 같은 다른 구현과는 다른 것으로 보입니다. 즉, 여러 언어로 동일한 memcache 클러스터를 사용하려는 경우 PHP 클라이언트에 값을 저장하면 다른 클라이언트에서는 찾을 수없는 문제가 발생할 수 있습니다.


3

오늘날 모두 문제가 있습니다. PECL / memcache는 구식이며 신뢰할 수 있지만 구식입니다. PECL / memcached 1.x는 베타 버전입니다. 일부 기능은 숫자 키를 처리하지 않으며 영구 연결을 사용할 때 연결이 누출됩니다. 일부 (모두?)는 GitHub에서 수정되고 있으며 2.x의 어느 시점에 출시되지만 오늘은 아닙니다. 더 자세한 검토는 http://brian.moonspot.net/php-memcached-issues를 참조하십시오


PECL / memcached 1.x는 이제 안정적입니다. PECL / memcache 2.x는 제한되어 있습니다. PECL / memcache 3.x는 매우 불안정합니다.
aredridel

2

저는 "전문가 PHP와 MySQL"책을 쓰고 있습니다. 차이점에 대해 거의 똑같은 글을 썼습니다. 내가 추천 한 것은 PECL / memcached입니다. # 1-모든 기능을 갖춘 우수한 C 라이브러리 # 2를 둘러 쌉니다. 더 최근에 유지 보수됩니다. # 3-더 많은 기능. PECL / memcache와의 차이가 없습니다.


0

Drupal 6 및 php-pecl-memcached에서 호출 당 최대 5ms까지 응답 시간이 지연되어 특정 사이트에서 php-pecl-memcached로 변경하기 전에보다 5 배 더 많은 호출을 생성하는 심각한 문제가 발생했습니다. . php-pecl-memcache로 변경하면 모든 문제가 해결되었습니다. 대기 시간 및 추가 통화.

이 답변은 Drupal 6 및 Drupal 7을 사용하는 사람들을 돕기위한 것입니다.


-3
  • memcache는 memcached (서버)의 클라이언트입니다.
  • libmemcached는 memcached의 클라이언트이기도합니다.

memcached에 대한 다른 클라이언트가 있습니다. http://code.google.com/p/memcached/wiki/Clients를 참조하십시오 .

웹에서 잘라 내기 및 붙여 넣기 :

http://www.php.net/manual/en/intro.memcache.php

  Memcache module provides handy procedural and object oriented 
  interface to memcached, highly effective caching daemon, which was 
  especially designed to decrease database load in dynamic web applications.
The Memcache module also provides a session handler (memcache).
More information about memcached can be found at » www.memcached.org 

http://www.php.net/manual/en/intro.memcached.php

   » memcached (http://www_memcached_org/) is a high-performance, distributed 
  memory object caching system, generic in nature, but intended for use in 
  speeding up dynamic web applications by alleviating database load.
  This extension uses libmemcached library to provide API for communicating with
  memcached servers. It also provides a session handler (memcached).
  Information about libmemcached can be found at 
   » tangent.org/552/libmemcached.html

http://pecl.php.net/package/memcached "libmemcached 라이브러리를 통해 memcached와 인터페이스하기위한 PHP 확장"이 확장은 libmemcached 라이브러리를 사용하여 memcached 서버와 통신하기위한 API를 제공합니다. https://github.com/andreiz/php-memcached

http://pecl.php.net/package/memcache "memcached extension"Memcached는 동적 웹 응용 프로그램이 객체를 메모리에 저장하여 데이터베이스로드를 줄 이도록 특별히 설계된 캐싱 데몬입니다. 이 확장 기능을 사용하면 편리한 OO 및 절차 인터페이스를 통해 memcached를 사용할 수 있습니다.

http://code.google.com/p/memcached/wiki/PHPClientComparison

                        pecl/memcache      pecl/memcached
  First Release Date      2004-06-08         2009-01-29 (beta)
  Actively Developed?     Yes                    Yes
  External Dependency     None              libmemcached

6
이 긴 대답은 포스터를 명확하게 만드는데도 가깝지 않습니다. 포스터는 이미 여러 클라이언트가 있음을 알고 있습니다. 그것들을 나열하고 다른 이름을 제안한다고해서 올바른 것을 쉽게 선택할 수는 없습니다.
Martijn Heemels
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.