Saltar para o conteúdo

Memcached

Origem: Wikipédia, a enciclopédia livre.
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á 12 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

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] Aplicações usando memcached tipicamente colocam requests e adições em RAM antes de recorrer a armazenamentos mais lentos, como bancos de dados.

O sistema é usado em sites incluindo o YouTube[5] Reddit,[6] Zynga,[7] Facebook,[8][9] Orange,[10] Twitter[11] e Wikipedia.[12] Engine Yard está usando o memcached como parte de sua stack tecnológica de platform as a service[13] e o Heroku oferece um serviço de memcached administrado no seu Couchbase Server[14] como parte de seu serviço de plataforma como serviço. Google App Engine, AppScale, Windows Azure e Amazon Web Services também oferecem um serviço de memcached através de uma API.[15][16][17][18]

O memcached foi desenvolvido inicialmente por Brad Fitzpatrick para seu site, LiveJournal, em 22 de Maio de 2003.[19][20][21]

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.

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.[22]


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. Cuong Do Cuong (Engineering manager at YouTube/Google). Seattle Conference on Scalability: YouTube Scalability (Online Video - 26th minute). Seattle: Google Tech Talks  Texto " June 23, 2007 " ignorado (ajuda)
  6. Steve Huffman on Lessons Learned at Reddit
  7. How Zynga Survived FarmVille
  8. Facebook Developers Resources
  9. Scaling memcached at Facebook
  10. Orange Developers
  11. It's Not Rocket Science, But It's Our Work
  12. MediaWiki memcached
  13. Engine Yard Technology Stack
  14. Heroku memcached add-on
  15. Using Memcache - Google App Engine - Google Code
  16. memcached in AppScale
  17. [1]
  18. [2]
  19. «LiveJournal changelog». LiveJournal. 22 de Maio de 2003. Consultado em 6 de Outubro de 2016 
  20. «weather, running, distributed cache daemon - brad's life». LiveJournal. 22 de Maio de 2003. Consultado em 6 de Outubro de 2016 
  21. «memcached». LiveJournal. 27 de Maio de 2003. Consultado em 6 de Outubro de 2016 
  22. «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]

Distribuições Comerciais com Suporte

[editar | editar código-fonte]