Redis vs Memcache

5

Sou um pouco novo no Memcache e no Redis e estou tentando entender a diferença entre os dois e o que cada um realmente é.

Como foi explicado para mim, o Memcache é uma solução de cache de banco de dados. Os dados das consultas executadas com frequência são armazenados em cache para serem reutilizados posteriormente, acelerando o tempo de resposta. Essa é uma descrição precisa?

E o Redis? Isso funciona de maneira semelhante? Em outras palavras, ele armazena em cache os dados que recebe de um banco de dados de back-end? Eu continuo lendo que o Redis é uma solução de armazenamento de valores chave que para mim soa mais como um substituto para um servidor de banco de dados em comparação com uma solução de cache de banco de dados.

Qualquer ajuda para entender o que é e quais são as diferenças seria muito apreciada.

Obrigado Brad

    
por Brad 18.12.2012 / 00:35

2 respostas

2

Existe realmente uma diferença fundamental entre os dois.

  • Redis = armazenamento em cache de chave / valor
  • Memcached = armazenamento em cache de objetos

Ambos podem ser manipulados para armazenar em cache tudo o que você deseja lançar neles. O objetivo final de qualquer um desses sistemas e muitos outros como eles é fornecer um cache na memória distribuído para armazenar os dados que você precisa acessar de forma mais rápida. Isso essencialmente relega o banco de dados a um repositório de dados simples para armazenamento persistente e de longo prazo, enquanto o mecanismo de cache in-memory transfere e movimenta o máximo de dados possível para o front-end da pilha, reduzindo a latência e o tempo para recuperar dados.

Como você apontou, o Redis é realmente destinado apenas ao cache Key and Value, no entanto, eu já vi objetos inteiros armazenados antes. Isso se presta bem a melhorias no desempenho do banco de dados.

O Memcached é um pouco mais flexível, pois pode armazenar tudo o que você quiser. É também um dos principais contendores de qualquer aplicativo de cache de memória distribuída. Existem outros sistemas que também fazem isso.

De qualquer forma, o software precisa ser gravado para carregar qualquer um desses dois caches. Alguns softwares existentes podem existir para qualquer propósito que você tenha em mente, como carregar uma tabela na memória, mas eles seriam específicos para cada caso.

    
por 18.12.2012 / 00:43
8

O Memcached é um armazenamento de chave / valor na memória. O Redis pode ser usado dessa maneira, mas é muito mais.

Maneiras Memcached e Redis são semelhantes

Ambos são capazes de armazenar em cache os resultados do banco de dados ou qualquer outra coisa que você queira armazenar em cache.

Ambos são capazes de armazenar valores de string simples para uma chave. Uma resposta anterior declarada memcached é mais flexível, e isso é falso. Armazenar "o que você quiser" no memcached envolve pegar objetos e serializar / organizá-los em strings. Redis apóia isso igualmente bem. O Redis geralmente é mais flexível, mesmo quando você armazena seus objetos serializados, já que o tamanho padrão do valor máximo é muito maior (1MB vs 512MB).

Ambos armazenam valores na memória e são extremamente rápidos e eficientes, geralmente com detecção de garrafas na largura de banda da rede ou E / S de memória sem uso pesado da CPU. Ambos são altamente escalonáveis. Ótimas ferramentas para gerenciamento e monitoramento existem para ambos. Soluções de cluster comercial existem para ambos. A partir de 3.0, o redis inclui suporte a cluster integrado, que o memcached não oferece.

Praticamente todos os casos de uso do memcached podem ser resolvidos igualmente bem, às vezes melhor, pelos redis. O Memcached é um software fantástico, mas suas características e pontos strongs se tornaram um subconjunto do Redis.

O Redis Superset

Onde eles diferem é no grande número de recursos adicionais que o redis oferece, e os casos de uso adicionais que esses recursos permitem.

O Redis é mais que um armazenamento de chave / valor. É um servidor de estrutura de dados na memória. As chaves podem ser atribuídas a strings simples, como no memcached, mas também podem armazenar hashes, listas, conjuntos ou conjuntos classificados. Esses tipos de dados adicionais são eficientes e otimizados, com muitos comandos para aproveitá-los , permitindo que os padrões de acesso não sejam oferecidos por um armazenamento simples de chave / valor.

O Redis oferece persistência , incorporada e ativada por padrão. Isso significa que o redis é um banco de dados real por padrão, e não um cache volátil simples como o memcached. Seus dados estarão lá quando você reiniciar. Há muitas opções de administração simples que você pode usar para ajustar a persistência para melhor resolver seu caso de uso ou desativá-la se tudo o que você deseja é um cache volátil.

O Redis oferece pub / sub (Publicar / Assinar). Isso permite que você crie canais e tenha um ou mais clientes assinando-os, permitindo um mecanismo eficiente de comunicação em tempo real de alta velocidade. Isso pode ser uma ótima solução para comunicação entre processos, entre aplicativos ou entre servidores.

O Redis oferece suporte a script Lua . Isso permite que você faça todo tipo de coisas novas. Um exemplo importante seria a execução de vários comandos redis dependentes atomicamente e com uma única chamada para redis. O script Lua é fácil de aprender e os scripts são executados de forma eficiente e atomizada.

Conclusão

A menos que seu projeto já esteja usando o memcached ou sua organização tenha investimentos significativos no memcached, você não deve usá-lo. Redis rivaliza memcached em seu próprio jogo e permite um mundo inteiro de novos. Mesmo que seu problema possa ser resolvido igualmente por ambas as ferramentas, use a ferramenta que oferece mais flexibilidade para problemas que você ainda não pode prever: redis. Você também estará escolhendo a ferramenta que é mais ativamente desenvolvida e mantida, e que está sendo melhorada mais rapidamente. O Memcached não vai a lugar nenhum e não deveria, mas é difícil fazer com que ele seja usado em algo novo, a menos que você tenha conhecimento significativo ou investimentos em infraestrutura no memcached.

Se você já estiver usando o memcached, mudar para a redis pode ser muito trabalhoso para pouco ou nenhum ganho. Avalie os redis de perto e decida a sua situação se os custos de mudança superam os benefícios. Em caso afirmativo, fique com memcached. Ainda é um excelente software estável e robusto.

    
por 05.10.2014 / 22:39