performance - online - what is redis




É memcached um dinossauro em comparação com Redis? (4)

Eu trabalhei bastante com o memcached nas últimas semanas e acabei de descobrir sobre o Redis. Quando eu li essa parte do seu readme, de repente eu senti uma sensação quente e aconchegante no meu estômago:

O Redis pode ser usado como um memcached em esteróides porque é tão rápido quanto o memcached, mas com um número maior de recursos. Como o memcached, o Redis também suporta o ajuste de timeouts para chaves, de modo que essa chave será automaticamente removida quando um determinado período de tempo passar.

Isso parece incrível. Eu também encontrei esta página com benchmarks: http://www.ruturaj.net/redis-memcached-tokyo-tyrant-mysql-comparison

Então, honestamente - Memcache é realmente aquele velho dinossauro que é uma má escolha do ponto de vista do desempenho quando comparado a este novato chamado Redis?

Eu não ouvi muito sobre Redis anteriormente, assim, a abordagem para a minha pergunta!


Então, honestamente - Memcache é realmente aquele velho dinossauro que é uma má escolha do ponto de vista do desempenho quando comparado a este novato chamado Redis?

  • Comparando o conjunto de recursos, o Redis tem muito mais funcionalidade;
  • Comparando a facilidade de instalação Redis também é muito mais fácil. Nenhuma dependência é necessária;
  • Comparando o desenvolvimento ativo, o Redis também é melhor;
  • Eu acredito que o memcached é um pouco mais rápido que o Redis . Não toca o disco de jeito nenhum;
  • Minha opinião é que Redis é melhor produto do que memcached .

Depende do que você precisa, em geral eu acho que:

  • Você não deve se importar muito com performances. O Redis é mais rápido por núcleo com valores pequenos, mas o memcached é capaz de usar vários núcleos com um único executável e uma porta TCP sem a ajuda do cliente. Também memcached é mais rápido com grandes valores na ordem de 100k. O Redis recentemente melhorou muito sobre grandes valores (branch unstable), mas o memcached ainda é mais rápido neste caso de uso. O ponto aqui é: nem um ou outro provavelmente será o seu gargalo para a consulta por segundo que eles podem oferecer.
  • Você deve se preocupar com o uso de memória. Para pares de valores chave simples, o memcached é mais eficiente em termos de memória. Se você usar hashes Redis, o Redis é mais eficiente em termos de memória. Depende do caso de uso.
  • Você deve se preocupar com persistência e replicação, dois recursos disponíveis apenas no Redis. Mesmo que seu objetivo seja criar um cache, isso ajuda que, após uma atualização ou uma reinicialização, seus dados ainda estejam lá.
  • Você deve se preocupar com o tipo de operações que você precisa. No Redis, existem muitas operações complexas, mesmo considerando apenas o caso de uso de armazenamento em cache, muitas vezes você pode fazer muito mais em uma única operação, sem exigir que os dados sejam processados ​​pelo cliente (muitas vezes, é necessária muita E / S). Essas operações geralmente são tão rápidas quanto as simples GET e SET. Então, se você não precisa apenas de GET / SET, mas coisas mais complexas, o Redis pode ajudar muito (pense no cache de timeline).

Sem um caso de uso é difícil escolher agora, mas eu acho que para muitas coisas Redis faz sentido, já que mesmo quando você não quer usá-lo como um DB, sendo muito mais capaz de resolver mais problemas, não apenas cache, mas até mensagens, classificação e assim por diante.

Ps, é claro, eu poderia ser parcial porque sou o principal desenvolvedor do projeto Redis.


O Memcache é uma excelente ferramenta ainda e MUITO confiável.

Em vez de olhar para este problema a partir da perspectiva de abaixar o que é mais rápido na faixa <100 ms, observe o desempenho por "classe" do software.

  • Utiliza apenas memória RAM local? -> mais rápido
  • Ele usa ram remoto? -> rápido
  • Ele usa ram mais hardddisk -> oh hurm.
  • Utiliza apenas harddisk -> run!

O que o memcached faz que o Redis não faz é o menos recentemente usado despejo de valores do cache. Com o memcached, você pode definir com segurança quantos valores desejar e, quando eles transbordam de memória, os que você não usou recentemente serão excluídos. Com o Redis, você pode apenas aproximar isso, definindo um tempo limite em tudo; quando precisar liberar memória, ele examinará três chaves aleatórias e excluirá a que estiver mais próxima de expirar.

Essa é a principal diferença, se você estiver apenas usando isso como um cache.





redis