Eu quero usar o memcached
http://www.danga.com/memcached/
Eu instalei-o através yum install memcached
Mas agora eu preciso me conectar ao PHP, e há uma extensão chamada memcache e uma chamada memcached? ARGH
http://us3.php.net/manual/en/book.memcache.php
http://us3.php.net/manual/en/book.memcached.php
Alguém poderia me apontar na direção certa aqui .. qual deles vai funcionar?
Além disso, preciso abrir portas para que ele funcione, mesmo que seja local? Depois de executá-lo, tento o telnet 127.0.0.1 11211 e recebo a conexão recusada.
Respostas:
A resposta curta: Qualquer um deles é o que você está procurando, mas minha primeira opção seria o memcache (o primeiro que você listou), puramente baseado no uso correto da nomenclatura.
Agora, aqui está como cheguei a essa conclusão:
Aqui está um plano de fundo rápido das convenções de nomenclatura (para quem não conhece), o que explica a frustração do solicitante da pergunta: Para muitos aplicativos * nix, a parte que executa o back-end é chamada de "daemon" (pense em "serviço" no Windows- terra), enquanto a interface ou aplicativo cliente é o que você usa para controlar ou acessar o daemon. O daemon geralmente é nomeado igual ao cliente, com a letra "d" anexada a ele. Por exemplo, "imap" seria um cliente que se conecta ao daemon "imapd".
Esta convenção de nomenclatura está claramente sendo respeitada pelo memcache quando você lê a introdução ao módulo memcache (observe a distinção entre memcache e memcached neste trecho):
A frustração aqui é causada pelo autor da extensão PHP que recebeu o nome incorreto de memcached , pois compartilha o mesmo nome que o daemon real chamado memcached . Observe também que, na introdução ao memcached (o módulo php) , ele menciona a libmemcached , que é a biblioteca compartilhada (ou API) usada pelo módulo para acessar o daemon memcached:
Em resumo, ambos são funcionalmente iguais, mas eles simplesmente têm autores diferentes, e um é simplesmente nomeado de maneira mais apropriada que o outro.
fonte
memcached
suporta tokens cas, por exemplo,memcache
não. Se você precisar, você sabe qual (com o nome errado ou não) para escolher.Você provavelmente deseja ver a Comparação de Clientes PHP .
Versão curta: Ambos funcionarão e, na maioria dos casos, qualquer um deles se sairá bem.
Em relação à outra questão: Sim, você deve conseguir
telnet 127.0.0.1 11211
. Muito poucos firewalls impediriam que o host local se comunicasse. Se você não conseguir se conectar, verifique se o memcached realmente está executandops auxwww | grep memcached
, o que também mostrará os argumentos da linha de comando usados para iniciar o memcached. Um dos argumentos deve ser-p 11211
ou outro número de porta. Vejaman memcached
o significado de todos os argumentos possíveis.fonte
ps auxwww | grep memcached
?Como o link de Nate sugere, ambos funcionam perfeitamente bem para uso simples. No entanto, o memcached suporta mais recursos que permitem obter o máximo desempenho do memcached. O protocolo binário reduz a quantidade de dados necessária para o envio entre o cliente e o servidor. Multigets e multisets permitem que você obtenha / defina vários itens ao mesmo tempo. Se você achar que precisa de mais informações sobre o memcache, o memcached é o melhor módulo. O uso do libmemcached sugere que a própria biblioteca é possivelmente mais otimizada do que a versão somente para PHP.
Memcached é um módulo mais recente em comparação com o memcache, tendo sido lançado apenas 8 meses atrás. Se você precisar direcionar uma versão mais antiga do PHP, poderá usar apenas o memcache.
fonte
O mais antigo e mais problemático é chamado
php-memcache
porque esse parecia o nome mais apropriado. A versão melhor e mais nova, desenvolvida de forma independente pelo pessoal do Digg, foi nomeadaphp-memcached
no interesse da desambiguação.As pessoas que recomendam que você escolha uma sobre a outra, com base unicamente na exatidão do nome, não têm como oferecer consultoria técnica.
fonte
Tendo usado o php-memcache recentemente, eu teria que apontar para o php-memcached.
Aqui estão algumas razões em cima da minha cabeça ..
1) Não há método getErrorCode () ou equivalente; portanto, se get () retornar FALSE, você não terá idéia se isso ocorre porque o valor armazenado no memcache é falso ou se houve algum problema.
2) Seu algoritmo de hash para hash consistente parece diferir de outras implementações, como as muitas bibliotecas de clientes criadas com o libmemcached. Isso significa que, se você quiser usar o mesmo cluster do memcache com vários idiomas, provavelmente terá problemas em que irá armazenar um valor com o cliente PHP, e outros clientes não o encontrarão.
fonte
Ambos têm problemas a partir de hoje. O PECL / memcache é antigo e confiável, com algumas exceções em que está desatualizado. PECL / memcached 1.x é beta na melhor das hipóteses. Algumas funções não lidam com teclas numéricas, elas vazam conexões ao usar conexões persistentes. Alguns (todos?) Estão sendo corrigidos no GitHub e serão lançados em algum momento no 2.x, mas não hoje. Para uma revisão mais detalhada, consulte http://brian.moonspot.net/php-memcached-issues
fonte
Estou trabalhando em um livro "Expert PHP and MySQL". Eu escrevi praticamente a mesma coisa sobre as diferenças. O que eu recomendei foi PECL / memcached. # 1 - envolve uma biblioteca C de bom desempenho com todos os recursos # 2 - é mantida mais recentemente. # 3 - mais recursos. Nenhuma depreciação para PECL / memcache.
fonte
Eu tive alguns problemas bastante graves com o Drupal 6 e o php-pecl-memcached nos quais os tempos de resposta foram atrasados em até 5ms por chamada e causariam um site em particular criar 5x mais chamadas do que antes da alteração para php-pecl-memcached . Mudar para php-pecl-memcache corrigiu todos os problemas; latência e chamadas extras.
Esta resposta está aqui apenas para ajudar aqueles que usam o Drupal 6 e possivelmente o Drupal 7.
fonte
E há outros clientes para memcached, consulte http://code.google.com/p/memcached/wiki/Clients
Recortar e colar da Web:
http://www.php.net/manual/en/intro.memcache.php
http://www.php.net/manual/en/intro.memcached.php
http://pecl.php.net/package/memcached "Extensão PHP para interface com o memcached via biblioteca libmemcached" Esta extensão usa a biblioteca libmemcached para fornecer API para comunicação com servidores memcached. https://github.com/andreiz/php-memcached
http://pecl.php.net/package/memcache "extensão memcached" Memcached é um daemon de cache projetado especialmente para aplicativos dinâmicos da web para diminuir a carga do banco de dados armazenando objetos na memória. Esta extensão permite que você trabalhe com o memcached por meio de interfaces OO e procedimentais práticas.
http://code.google.com/p/memcached/wiki/PHPClientComparison
fonte