Memcached

software de cache em memória de propósitos gerais

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]

Memcached
Desenvolvedor Danga Interactive
Lançamento 22 de maio de 2003 (2003-05-22)
Versão estável 1.6.23 (9 de janeiro de 2024; há 3 meses[1])
Escrito em C
Sistema operativo Cross-platform
Gênero(s) distributed memory caching system
Licença BSD License
Página oficial www.memcached.org

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

O memcached foi desenvolvido inicialmente por Brad Fitzpatrick para seu site, LiveJournal, em 22 de Maio de 2003.[5][6][7]

Arquitetura editar

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

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

Referências

  1. «Release 1.6.23». Consultado em 14 de fevereiro de 2025  Verifique data em: |acessodata= (ajuda)
  2. «License of memcached». Consultado em 1 de fevereiro de 2013. Arquivado do original em 28 de fevereiro de 2008 
  3. «Memcached NewOverview» 
  4. «Memcached NewUserInternals» 
  5. «LiveJournal changelog». LiveJournal. 22 de Maio de 2003. Consultado em 6 de Outubro de 2016 
  6. «weather, running, distributed cache daemon - brad's life». LiveJournal. 22 de Maio de 2003. Consultado em 6 de Outubro de 2016 
  7. «memcached». LiveJournal. 27 de Maio de 2003. Consultado em 6 de Outubro de 2016 
  8. «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

Distribuições Comerciais com Suporte editar