Fernando Jorge Mota

Memcached – Cache, escalável e eficiente

Mesmo com a web dinâmica que temos hoje, é possível reaproveitar o conteúdo de muitas consultas ao banco de dados sem ter o mínimo receio. Isso acontece pois, mesmo com o conteúdo mudando frequentemente durante um dia, por exemplo, é comum haver muitas requisições que simplesmente apenas pegam o conteúdo repetido, sem modificações. Imagine por exemplo um site de notícias: Mesmo com várias notícias sendo postadas diariamente, há uma certeza quase exata: As categorias pelos quais as notícias são classificadas, como economia e política, por exemplo, não mudam com tanta frequência de nome e identificador. Assim, as categorias se tornam um excelente candidato a serem cacheados, e é possível evitar consultas ao banco de dados facilmente apenas registrando-as elas em algum sistema de cache. Hoje, vou falar um pouco sobre mais nada menos do que o mais popular sistema de cache usado atualmente: O Memcached.

O Memcached é hoje, o sistema de cache mais popular e fácil de usar disponível atualmente. Com drivers para inúmeras linguagens e simplicidade impressionante, ele cumpre muito bem a tarefa para o qual foi criado: Cachear dados.

Inclusive, sua simplicidade merece destaque neste post, pois o Memcached possui pouquissimos dados que, além de tornar o software muito simples, facilitam a implementação do cache no seu programa. Segue abaixo uma descrição básica de algumas das operações que o protocolo do Memcached permite, e que existem na maioria (senão em todos) os drivers implementados para se comunicar com o Memcached:

Tem mais algumas operações relacionadas a captura de estatísticas e limpeza do cache que estão disponíveis no protocolo também, só que, no fim das contas, são operações tão pouco usadas por aplicações que resolvi não incluir aqui. Além disso, dentre todas essas operações, as mais comuns de serem usadas são a get e a set, que trabalham num esquema similar a esse (representei em um Python bem simples, mas dá para entender bem o exemplo):

Note que, para o código acima funcionar, seria necessário instalar, importar e configurar o driver do memcached para Python e também criar uma função fetch_foo_from_database. Mas já dá para entender bem como seria o uso do cache numa aplicação normal.

Além disso, ele é usado por sites bem conhecidos no mundo da tecnologia, entre elas:

Isso porque o Memcached oferece ótimo desempenho (por funcionar 100% em memória, daí o nome memcached) e vários de seus drivers permitem o uso de clusters de cache (ou seja, a distribuição do cache para várias máquinas), permitindo uma escalabilidade horizontal do cache e suportando assim qualquer número de visitas com muita facilidade.

Gostou do conteúdo desse post? Apoie o blog contribuindo a partir de R$1/mês através da nossa página no Apoia.se! Isso me ajudará a manter o blog no ar, além de trazer mais coisas legais para vocês! Obrigado desde já! 😀