Memcached cache de objetos de alta performance Guilherme Chapiewski http://gc.blog.br <guilherme.chapiewski@gmail.com>
O que é cache?
O que  é cache? “ Em ciência da computação, cache é uma c ole ção de dados previamente computados, armazenados em algum local de acesso mais rápido que o local original, utilizado em casos aonde o dado original exige muito esforço computacional para ser obtido ou gerado.” http://en.wikipedia.org/wiki/Cache
O que  é cache? “ Em outras palavras, cache é um armazenamento temporário onde dados frequentemente acessados podem ser acessados com alta velocidade. Uma vez que o dado é armazenado no cache, acessos futuros à mesma informação podem ser feitos acessando a cópia cacheada ao invés de re-computar o dado original, fazendo com que o tempo médio de acesso seja menor.” http://en.wikipedia.org/wiki/Cache
Porque devemos usar cache?
Porque devemos usar cache ? Poupar recursos computacionais (especialmente os compartilhados). Melhorar o tempo de resposta para os usu ários da aplicação. Aumentar a capacidade da aplicação (atender mais usuários).
O que é Memcached?
O que  é o Memcached? S istema de cache de objetos em memória concebido para aumentar a velocidade de aplicações dinâmicas aliviando a carga do banco de dados. Desenvolvido pela  Danga Interactive  para aumentar a velocidade do LiveJournal.com, um site com 20 milh ões + de visualiza ções de páginas dinâmicas por dia!
Quais vantagens trouxe para o LiveJournal.com? Reduziu drasticamente a utiliza ção de banco de dados. Melhorou significativamente o tempo de resposta da aplicação para o usuário. Aumentou a velocidade de resposta do banco de dados nos casos de acesso  à informações não cacheadas devido a baixa utilização do mesmo.
Como funciona?
Como funciona o Memcached: Fica fora da JVM - é um daemon escutando em alguma porta esperando por conexões. Funciona  como se fosse um grande hash table, armazenando pares de chave=valor. Atrav és de uma chave é possível armazenar ou obter um valor qualquer . A aplica ção usa um cliente que se conecta ao Memcached para armazenar e obter os dados. Do ponto de vista da aplicação o funcionamento é idêntico a outras engines de cache como JBossCache, EhCache ou OSCache.
Como funciona o Memcached:
Configura ção do ambiente : Configura-se a quantidade de instâncias de Memcached desejadas. O cliente é configurado com o endereço de  todas  as instâncias de Memcached, ou seja, em todos os applications servers todos os clientes terão a mesma configuração. É o cliente que decide qual servidor de Memcached atenderá cada requisição baseado num hash gerado a partir da chave utilizada para o cache de um determinado valor.
Exemplo: Passo 1 : a aplica çao solicita as chaves  foo ,  bar  e  baz  utilizando o cliente do Memcached , que calcula o hash das chaves determinando qual servidor atender á  a requisi ção .
Exemplo: Passo 2 : o cliente do Memcached faz paralelamente resuisi ções à todos os servidores relevantes .
Exemplo: Passo 3 : o Memcached envia respostas ao cliente que fez a requisi ção .
Exemplo: Passo 4 : o cliente do Memcached retorna os dados para a aplica ção, encapsulando toda a complexidade da infraestrutura .
Alguns pontos: Somente o primeiro acesso à uma chave gera cache. Os acessos seguintes são “cache hit”. Mesmo que o segundo acesso seja feito por outro application server, todos eles sempre irão no mesmo Memcached para uma determinada chave. Todo cache expira depois de um determinado tempo (configurado pelo usuário no momento da criação da entrada no cache). Se a memória do Memcached acabar, os itens mais antigos vão sendo removidos para dar espaço aos novos (LRU).
Para saber mais: O que  é cache:  http://en.wikipedia.org/wiki/Cache Site do Memcached:  http://www.danga.com/memcached/ Memcached FAQ:  http://www.socialtext.net/memcached/index.cgi?faq Artigo sobre cache distribu ído com Memcached:  http://www.linuxjournal.com/article/7451

Memcached

  • 1.
    Memcached cache deobjetos de alta performance Guilherme Chapiewski http://gc.blog.br <guilherme.chapiewski@gmail.com>
  • 2.
    O que écache?
  • 3.
    O que é cache? “ Em ciência da computação, cache é uma c ole ção de dados previamente computados, armazenados em algum local de acesso mais rápido que o local original, utilizado em casos aonde o dado original exige muito esforço computacional para ser obtido ou gerado.” http://en.wikipedia.org/wiki/Cache
  • 4.
    O que é cache? “ Em outras palavras, cache é um armazenamento temporário onde dados frequentemente acessados podem ser acessados com alta velocidade. Uma vez que o dado é armazenado no cache, acessos futuros à mesma informação podem ser feitos acessando a cópia cacheada ao invés de re-computar o dado original, fazendo com que o tempo médio de acesso seja menor.” http://en.wikipedia.org/wiki/Cache
  • 5.
  • 6.
    Porque devemos usarcache ? Poupar recursos computacionais (especialmente os compartilhados). Melhorar o tempo de resposta para os usu ários da aplicação. Aumentar a capacidade da aplicação (atender mais usuários).
  • 7.
    O que éMemcached?
  • 8.
    O que é o Memcached? S istema de cache de objetos em memória concebido para aumentar a velocidade de aplicações dinâmicas aliviando a carga do banco de dados. Desenvolvido pela Danga Interactive para aumentar a velocidade do LiveJournal.com, um site com 20 milh ões + de visualiza ções de páginas dinâmicas por dia!
  • 9.
    Quais vantagens trouxepara o LiveJournal.com? Reduziu drasticamente a utiliza ção de banco de dados. Melhorou significativamente o tempo de resposta da aplicação para o usuário. Aumentou a velocidade de resposta do banco de dados nos casos de acesso à informações não cacheadas devido a baixa utilização do mesmo.
  • 10.
  • 11.
    Como funciona oMemcached: Fica fora da JVM - é um daemon escutando em alguma porta esperando por conexões. Funciona como se fosse um grande hash table, armazenando pares de chave=valor. Atrav és de uma chave é possível armazenar ou obter um valor qualquer . A aplica ção usa um cliente que se conecta ao Memcached para armazenar e obter os dados. Do ponto de vista da aplicação o funcionamento é idêntico a outras engines de cache como JBossCache, EhCache ou OSCache.
  • 12.
    Como funciona oMemcached:
  • 13.
    Configura ção doambiente : Configura-se a quantidade de instâncias de Memcached desejadas. O cliente é configurado com o endereço de todas as instâncias de Memcached, ou seja, em todos os applications servers todos os clientes terão a mesma configuração. É o cliente que decide qual servidor de Memcached atenderá cada requisição baseado num hash gerado a partir da chave utilizada para o cache de um determinado valor.
  • 14.
    Exemplo: Passo 1: a aplica çao solicita as chaves foo , bar e baz utilizando o cliente do Memcached , que calcula o hash das chaves determinando qual servidor atender á a requisi ção .
  • 15.
    Exemplo: Passo 2: o cliente do Memcached faz paralelamente resuisi ções à todos os servidores relevantes .
  • 16.
    Exemplo: Passo 3: o Memcached envia respostas ao cliente que fez a requisi ção .
  • 17.
    Exemplo: Passo 4: o cliente do Memcached retorna os dados para a aplica ção, encapsulando toda a complexidade da infraestrutura .
  • 18.
    Alguns pontos: Somenteo primeiro acesso à uma chave gera cache. Os acessos seguintes são “cache hit”. Mesmo que o segundo acesso seja feito por outro application server, todos eles sempre irão no mesmo Memcached para uma determinada chave. Todo cache expira depois de um determinado tempo (configurado pelo usuário no momento da criação da entrada no cache). Se a memória do Memcached acabar, os itens mais antigos vão sendo removidos para dar espaço aos novos (LRU).
  • 19.
    Para saber mais:O que é cache: http://en.wikipedia.org/wiki/Cache Site do Memcached: http://www.danga.com/memcached/ Memcached FAQ: http://www.socialtext.net/memcached/index.cgi?faq Artigo sobre cache distribu ído com Memcached: http://www.linuxjournal.com/article/7451