Memcached vs. Redis comparado

Memcached vs. Redis comparado
Existem duas opções concorrentes para bancos de dados de pares de valores-chave na memória; Redis e Memcached. Ambos são bancos de dados de memória de código aberto gratuitos que fornecem baixa latência para acesso a dados.

Apesar dessas semelhanças, pode ser um grande desafio escolher o que usar para seus aplicativos.

Neste artigo, vamos dividir os aspectos essenciais de um banco de dados na memória e compará-los.

Definição

Vamos começar no básico e discutir o que é redis e o que é memcachado?

O que é Redis?

Servidor de dicionário remoto ou redis para abreviação é definido como um banco de dados de memória de código aberto, usado como um corretor de cache ou mensagem. Foi desenvolvido em 2009 por Salvatore Sanfilippo e agora alimenta sistemas populares como Twitter, Stackoverflow, Github, etc.

O que é memcached?

O Memcached é definido como um banco de dados de memória livre, de código aberto e de alto desempenho. É usado para fornecer um mecanismo de cache para aplicações, mas age genericamente.

Foi desenvolvido em 2004 por Brad Fitzpatrick e agora é usado por aplicativos populares como Twitter, Facebook, YouTube, Instagram, Udemy, Slack, etc.

Suporte de idioma e plataforma

Redis está escrito em Ansi C e trabalha em todos os sistemas Posix. Redis é suportado nos sistemas Linux, BSD e OSX. O suporte ao Windows ainda não está disponível desde a redação deste tutorial.

Memcached está escrito em Ansi C, mas com plataforma cruzada. Embora não haja um lançamento oficial do Memcached for Windows, você pode encontrar implementações de Cygwin do banco de dados ou compilá -lo para sua plataforma.

Armazenamento de dados

Redis tem várias estruturas de dados, que são muito adequadas para muitas necessidades. Ele suporta tipos de dados como:

  1. Cordas
  2. Listas
  3. Conjuntos
  4. Hashes
  5. Conjuntos classificados
  6. Bitmaps
  7. Hyperlogs
  8. Índices geoespaciais
  9. Fluxos

O Redis também permite que você realize operações automáticas, como anexar a strings, calcular união, diferença, interseção, etc., Anexando um elemento a uma lista, etc.

Memcached, por outro lado, suporta cordas binárias simples. Isso facilita o uso e usa menos sobrecarga de memória do que Redis.

Arquitetura

Redis e Memcached seguem uma arquitetura cliente-servidor. No entanto, Redis é um único thread enquanto o memcached é multi-thread.

Particionamento de dados

Redis e Memcached suportam a distribuição de dados em vários nós.

Latência

Como Redis e Memcached são bancos de dados de memória, eles fornecem latência sub-milissegundos.

Limpeza de cache

Redis e Memcached permitem limpar o cache usando os comandos Flushall ou Flushdb e Flush_all.

Escalabilidade

Redis e Memcached permitem que você escala à medida que seus dados crescem. No entanto, Redis escala bem horizontalmente, enquanto os benefícios do Memcached bem na escalabilidade vertical

Política de despejo

Redis suporta uma coleção de políticas de despejo que podem ser personalizadas de acordo com suas necessidades.

Verifique nosso tutorial sobre políticas de despejo de Redis para saber mais.

Por outro lado, o memcached é limitado à política de despejo da LRU.

Facilidade de uso/documentação

Redis é uma documentação muito bem e tem uma grande comunidade por trás disso. Isso facilita o aprendizado e o uso.

Embora o Memcached seja geral e relativamente documentado, pode ser necessário investigar o código -fonte para implementar recursos personalizados.

Gerenciamento de banco de dados

Redis fornece um utilitário da CLI integrado para acessar e gerenciar seus bancos de dados e servidor Redis.

Memcached usa Telnet para conectar e gerenciar seu servidor.

Protocolo de comunicação

Redis usa protocolo de conexão TCP ou soquetes do tipo Unix sem suporte para UDP.

Memcached suporta protocolos TCP e UDP.

Replicação

Redis oferece uma implementação simples de replicação de escravos mestre. É fácil usar e configurar. A replicação criará cópias exatas da instância mestre, independentemente do que acontece com o mestre.

Memcached não suporta nativamente a replicação. No entanto, você pode implementar a replicação de dados usando ferramentas de patch como http: // repcached.laboratório.Klab.org/

Persistência/instantâneos

Redis suporta nativamente instantâneos salvando um instantâneo de seus conjuntos de dados em um disco no arquivo binário. No entanto, você pode personalizar os recursos de captura instantânea em redis.arquivo conf.

Para persistência, Redis suporta:

  1. RDB Persistência
  2. Aof persistência.

Verifique nosso tutorial sobre a persistência de Redis para explorar mais.

O Memcached não suporta nativamente o despejo de disco. No entanto, você pode usar ferramentas como o Memcached-DD para implementar.

Não há persistência de dados para memcached.

Script do lado do servidor

Redis suporta scripts do lado do servidor usando um intérprete Lua incorporado. Ele usa funções avaliadas e avaliadas para avaliar os scripts da Lua.

Lembre -se de que os scripts Lua em Redis são síncronos. Portanto, outras operações são bloqueadas quando os scripts estão executando.

Memcached não suporta scripts do lado do servidor.

Pub/sub

Redis suporta nativamente o modelo de mensagens Publish-Subscribe.

Memcached não tem suporte para o modelo de mensagens de sub-sub-sub.

Fluxos

Redis suporta fluxos com a adição de tipos de fluxo Redis no Redis versão 5.0

Memcached não suporta nativamente fluxos. No entanto, você pode usar ferramentas como o Kafcache para implementar fluxos.

https: // github.com/jpzk/kafcache

Apoio geoespacial

Redis vem com suporte nativo para dados geoespaciais em tempo real. No entanto, o Memcached não possui uma estrutura de dados para suportar dados geoespaciais.

Gerenciamento de transações

Embora o Memcached use operações atômicas, ele não suporta transações.

Por padrão, o Redis suporta transações para executar comandos.

Clientes/linguagens de programação

Redis suporta quase todas as principais linguagens de programação. As listas de clientes suportadas são como mostrado abaixo:

  • ActionScript
  • ActiveX/com+
  • Bash
  • Boomi
  • C
  • C#
  • C++
  • Clojure
  • Lisp comum
  • Cristal
  • D
  • Dardo
  • Delphi
  • Elixir
  • Emacs lisp
  • Erlang
  • Chique
  • Gawk
  • GNU Prolog
  • Ir
  • Haskell
  • Haxe
  • Io
  • Java
  • Julia
  • Kotlin
  • Laço
  • Lua
  • Matlab
  • MRUBY
  • Nim
  • Nó.JS
  • Objective-C
  • OCAML
  • Pascal
  • Perl
  • Php
  • PL/SQL
  • Prolog
  • Dados puros
  • Pitão
  • R
  • Raquete
  • REBOL
  • Rubi
  • Ferrugem
  • Scala
  • Esquema
  • Conversa fiada
  • Rápido
  • Tcl
  • Vb
  • Vcl
  • Xojo

O Memcached não é deixado para trás e fornece aos clientes grandes linguagens de programação. No entanto, ele fica aquém da lista de clientes em comparação com Redis.

Eles incluem:

  • .LÍQUIDO
    • Enyim
    • Beit
  • C
    • libmemcached
  • C++
    • Libmemcached
    • Mcache-client
  • Fusão a frio
    • cfspymemcached
  • Erlang
    • Âncora
  • Elixir
    • Memcache
  • Java
    • Spymemcached
    • Xmemcached
    • GWWHALIN MEMCACHED CLIENTE
  • Lisp
    • CL-Memcached
  • Lua
    • Lua-Rony-Memcached
  • OCAML
    • OCAML-MEMCACHED
  • Perl
    • Perl-cache-Memcached
  • Php
    • Memcached-php
    • Memcached
    • PHP-Memcached
  • Pitão
    • Pymemcache
    • Python Memcached

Suporte à nuvem

Os seguintes provedores de nuvem suportam Redis:

  1. Google Cloud como MemoryStore
  2. Amazon Aws como Redis
  3. Microsoft Azure como Cache do Azure
  4. Alibaba Cloud como asparadb
  5. Oráculo
  6. IBM Cloud

Os seguintes provedores também apoiam o Memcached:

  1. Google Cloud como MemoryStore
  2. Amazon AWS como Amazon Elasticache
  3. Microsoft Azure
  4. Alibaba Cloud como asparadb
  5. IBM Cloud como memcached por Bitnami

Pensamentos finais.

Este tutorial fornece um colapso abrangente das semelhanças e diferenças de Redis e bancos de dados de memcached. Lembre -se de que este tutorial serve como referência de informação. Use -o para fazer uma escolha com base em seus requisitos.

Codificação feliz e vejo você no próximo!!!