8 minutos
Redis (REmote DIctionary Server) é um armazenamento de chave/valor NoSQL de código aberto, em memória, utilizado principalmente como cache de aplicação ou banco de dados de resposta rápida.
O Redis armazena dados na memória, em vez de em disco ou em unidade de estado sólido (SSD), o que proporciona velocidade, confiabilidade e desempenho incomparáveis.
Quando uma aplicação depende de fontes externas de dados, a latência e o throughput dessas fontes podem criar um gargalo de desempenho, especialmente com o aumento do tráfego ou à medida que a aplicação escala. Uma forma de melhorar o desempenho nesses casos é armazenar e manipular dados em memória, fisicamente mais próximo da aplicação. O Redis foi criado para essa tarefa: armazena todos os dados em memória — oferecendo o máximo desempenho possível na leitura e gravação — e oferece recursos de replicação integrados que permitem posicionar os dados fisicamente mais próximos do usuário para a menor latência.
Outras características do Redis dignas de nota incluem compatibilidade com várias estruturas de dados, scripts Lua integrados, vários níveis de persistência em disco e alta disponibilidade.
O Redis se diferencia dos armazenamentos NoSQL “tradicionais” como um componente auxiliar projetado especificamente para melhorar o desempenho de aplicações. Aqui estão alguns recursos diferenciadores do Redis:
Novamente, ao contrário de bancos NoSQL como MongoDB e PostgreSQL, o Redis armazena dados na memória principal do servidor, em vez de em discos rígidos ou unidades de estado sólido. Isso leva a tempos de resposta significativamente mais rápidos ao executar operações de leitura e gravação. Isso também ajuda a garantir alta disponibilidade (juntamente com o Redis Sentinel) e escalabilidade de serviços e cargas de trabalho de aplicações.
O Redis pode enfileirar tarefas que podem levar mais tempo para serem processadas pelos clientes da web do que o normal. O enfileiramento de tarefas multiprocesso é comum em muitas das aplicações baseadas na web atuais, e o Redis facilita a implementação de processos automatizados escritos em Python que são executados em segundo plano em ciclos de solicitação/resposta.
Embora tecnicamente seja um armazenamento de chave/valor, o Redis é um servidor de estrutura de dados real, compatível com vários tipos e estruturas de dados, incluindo:
O Redis conta com recursos nativos de integração de clientes para ajudar os desenvolvedores a manipular e interagir com seus dados. Atualmente, há mais de 100 clientes de código aberto diferentes disponíveis na biblioteca de clientes do Redis, e os desenvolvedores podem facilmente adicionar novas integrações para compatibilidade com funcionalidades e linguagens de programação adicionais.
Algumas das funcionalidades mais importantes ou dignas de nota do Redis incluem:
Redis Sentinel é um sistema distribuído independente que ajuda desenvolvedores a calibrar suas instâncias para serem altamente disponíveis aos clientes. O Sentinel utiliza processos de monitoramento, notificações e failovers automáticos para informar usuários sobre problemas em instâncias master e slave, ao mesmo tempo em que reconfigura novas conexões para aplicações quando necessário.
Redis Cluster é uma implementação distribuída do Redis que divide automaticamente os conjuntos de dados entre vários nós. Isso permite maior desempenho e escalabilidade das implementações de bancos de dados, ao mesmo tempo em que garante operações contínuas caso os subconjuntos de nós não consigam se comunicar com o restante do cluster.
Como o Redis oferece suporte ao uso de comandos de publicação and inscrição (Pub/Sub), os usuários podem projetar serviços de chat e mensagens de alto desempenho em todas as suas aplicações e serviços. Isso inclui a capacidade de usar estruturas de dados de lista para executar operações atômicas e recursos de bloqueio.
O Redis usa armazenamento em disco persistente projetado para sobreviver a interrupções de processos e gargalos de rede. O Redis pode persistir conjuntos de dados tirando instantâneos regulares dos dados e anexando-os às alterações à medida que elas se tornam disponíveis. O Redis pode, então, ser configurado para gerar esses backups de bancos de dados sob demanda ou em intervalos automáticos para garantir a durabilidade e a integridade dos bancos de dados.
Tanto o Redis quanto o Memcached são armazenamentos de dados in-memory de código aberto, mas diferem no que diz respeito aos benefícios e funcionalidades. O Memcached costuma ser a escolha preferida para aplicações simples que exigem menos recursos de memória, mas é limitado ao armazenar dados em sua forma serializada. O uso de estruturas de dados pelo Redis fornece muito mais poder ao trabalhar com grandes conjuntos de dados e mais capacidade de ajustar o conteúdo do cache e manter maior eficiência em cenários de aplicações específicas.
Enquanto o Redis é um armazenamento de banco de dados em memória, o MongoDB é conhecido como um armazenamento de documentos em disco. Embora ambas as soluções sejam criadas para propósitos diferentes, elas são frequentemente usadas em conjunto para maximizar a velocidade e a eficiência de um banco de dados NoSQL. Graças à sua capacidade de cache, o Redis consegue localizar dados necessários de forma extremamente rápida, servindo como um buffer de ingestão que torna o MongoDB mais eficiente e capaz de gerenciar frequências maiores de atualizações de documentos em quase tempo real. Com a habilidade do MongoDB de armazenar grandes volumes de dados e a capacidade do Redis de processá-los mais rapidamente, a combinação oferece uma solução poderosa de gerenciamento de banco de dados para diversos casos de uso.
Aqui estão alguns casos de uso comuns dos quais as empresas se beneficiam ao trabalhar com o Redis:
Começar com o Redis é um processo relativamente fácil, especialmente com o uso do Redis Desktop Manager (RDM). E, como Redis e RDM são de código aberto, comunidades de desenvolvimento ativas estão sempre trabalhando para melhorar sua eficiência de operação e evoluir continuamente as ferramentas e integrações suportadas.
Para mais informações sobre instalação e configuração do Redis, siga as instruções de configuração na comunidade.
Use soluções de bancos de dados da IBM para atender a diversas necessidades de cargas de trabalho em toda a nuvem híbrida.
Explore o IBM Db2, um banco de dados relacional que oferece alto desempenho, escalabilidade e confiabilidade para armazenar e gerenciar dados estruturados. Está disponível como SaaS no IBM Cloud ou para auto-hospedagem.
Libere o valor dos dados empresariais com a IBM® Consulting, construindo uma organização orientada por insights, que proporciona vantagem comercial.