Memcached
Desenvolvedor | Danga Interactive |
Lançamento | 22 de maio de 2003 |
Versão estável | 1.6.23 (9 de janeiro de 2024[1]) |
Escrito em | C |
Sistema operativo | Cross-platform |
Gênero(s) | distributed memory caching system |
Licença | BSD License |
Página oficial | www |
Em computação, memcached é um sistema distribuído de cache em memória de propósitos gerais. É frequentemente utilizado para acelerar sites dinâmicos orientados a banco de dados, cacheando dados e objetos na RAM para reduzir o número de vezes que uma fonte de dados externa (como um banco de dados ou uma API) deve ser acessada. Foi originalmente desenvolvido pela Danga Interactive para o LiveJournal, mas é usado agora para muitos outros sites. O Memcached roda em Unix, Linux, Windows e Mac OS X e é distribuído sobre a licença Revised BSD license.[2]
A API do memcached provê uma hash table gigante distribuída em múltiplas máquinas. Quando a tabela está cheia, inserções subsequentes fazem com que os dados antigos sejam expurgados em least recently used (LRU) order.[3][4]
História
[editar | editar código-fonte]O memcached foi desenvolvido inicialmente por Brad Fitzpatrick para seu site, LiveJournal, em 22 de Maio de 2003.[5][6][7]
Arquitetura
[editar | editar código-fonte]O sistema usa uma arquitetura cliente-servidor. O servidor mantem um array associativo chave-valor; o cliente popula esse array e consulta-o. Chaves podem ter até 250 bytes e os valores podem ter no máximo 1MB (megabyte) de tamanho.
Clientes usam bibliotecas client-side para contactar os servidores que por padrão expõe seus serviços na porta 11211. Cada cliente conhece todos os servidores, esses não se comunicam entre si. Se um cliente deseja setar ou ler o valor correspondente a uma chave, a biblioteca cliente primeiramente computa o hash da chave para determinar qual servidor usar. Então ele contacta o servidor. O servidor então computa um segundo hash da chave para determinar onde armazenar ou ler o valor correspondente.
O servidor mantém os valores em RAM. Se um servidor fica sem memória livre, ele descarta os valores mais antigos. Portanto, os clientes devem tratar o memcached como um cache transitório. Eles não devem contar com que os dados armazenados no memcached ainda estarão lá quando ele precisarem. MemcacheDB, Couchbase Server, Tarantool e outros bancos de dados proveem armazenamento persistente enquanto mantém a compatibilidade com o protocolo do memcached.
Se todas as bibliotecas client usam o mesmo algoritmo de hash para determinar o servidores, então os clientes pode ler os dados cacheados um dos outros. Isso é obviamente desejável.
Uma implementação típica terá vários servidores e muitos clientes. Porém é possível usar o memcached em um único computador, agindo como cliente e servidor.
Segurança
[editar | editar código-fonte]A maioria das implantações do memcached estão dentro de uma rede confiável onde os clientes podem se conectar livremente a qualquer servidor. Há casos, contudo, em que o memcached é implementado em uma rede não confiável ou quando os administradores gostariam de exercitar controle sobre os clientes que estão conectando.
Uma apresentação na BlackHat USA 2010 revelou que um grande número de grande sites públicos deixaram seus memcached abertos para inspeção, análise, obtenção e modificação de dados.[8]
Ver também
[editar | editar código-fonte]Referências
- ↑ «Release 1.6.23». Consultado em 14 de fevereiro de 2025 Verifique data em:
|acessodata=
(ajuda) - ↑ «License of memcached». Consultado em 1 de fevereiro de 2013. Arquivado do original em 28 de fevereiro de 2008
- ↑ «Memcached NewOverview»
- ↑ «Memcached NewUserInternals»
- ↑ «LiveJournal changelog». LiveJournal. 22 de Maio de 2003. Consultado em 6 de Outubro de 2016
- ↑ «weather, running, distributed cache daemon - brad's life». LiveJournal. 22 de Maio de 2003. Consultado em 6 de Outubro de 2016
- ↑ «memcached». LiveJournal. 27 de Maio de 2003. Consultado em 6 de Outubro de 2016
- ↑ «BlackHat Write-up: go-derper and mining memcaches». Consultado em 1 de fevereiro de 2013. Arquivado do original em 4 de abril de 2013
Ligações externas
[editar | editar código-fonte]- «Official memcached site» (em inglês)
- «memcached wiki and faq». (em inglês)
- «PHP Memcached Manager with Tag Support» (em inglês)
- «membase». (em inglês)
- «Memcached and Ruby» (em inglês)
- «go-memcached - memcached implementation in Go». (em inglês)
- «QuickCached - memcached server implementation in Java» (em inglês)
- «nsmemcache - memcache client for AOL Server». (em inglês)
Distribuições Comerciais com Suporte
[editar | editar código-fonte]- «Couchbase Server (formerly Membase)» (em inglês). offers a memcached "bucket type" (free for use, subscription support available)
- «GigaSpaces Java based Memcached» (em inglês). (free community edition, fault tolerance)
- «Hazelcast Memcached» (em inglês). clustered, elastic, fault-tolerant, Java based memcached (free for use, subscription support available)