Reds

O Redis suporta uma ampla gama de estruturas de dados, incluindo strings, hashes, listas, conjuntos e conjuntos ordenados. Isso permite que os desenvolvedores armazenem e manipulem dados de várias maneiras, tornando-o uma ferramenta versátil e flexível.

DB name: Redis
Presentation: https://www.canva.com/design/DAFUu1WY9rY/FvTmlIAypPYGeE2IdML8VA/edit?utm_content=DAFUu1WY9rY&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton


Student List:

  • Jefferson Eduardo Muniz Bueno - 11275255
  • Luísa Souza Moura - 10692179
  • Marcos Antonio Nobre Coutinho - 10716397
  • Thiago Preischadt Pinheiro - 10723801

Main DB Features:
  • Armazenamento em memória: Diferente de outros bancos de dados convencionais que salvam os dados diretamente em disco, Redis armazena os dados em memória (na memória principal do servidor). Isso garante uma maior performance e rapidez no acesso aos dados, promovendo tempos de resposta muito maiores que bancos de dados que armazenam em disco.
  • Alta disponibilidade e escalabilidade: Redis oferece uma arquitetura de réplica primária ou de clusters. A arquitetura de réplica primária permite disponibilidade dos dados a qualquer tempo e os clusters possibilitam que você escale o seu servidor conforme a demanda
  • Persistência de dados: Redis armazena seus dados em memória, mas também oferece uma arquitetura de backups em que ele armazena em disco tudo que está em memória
  • Suporte a diversas estruturas de dados: Você pode usar diferentes estruturas para armazenar os seus dados: strings, lists, sets, hashes, bitmaps, HyperLogLogs etc

Does It Implement CA, CP, or AP? Why?
No teorema CAP, Redis não é situado de maneira absoluta em nenhuma das categorias, pois oferece consistência e disponibilidade configuráveis. Dessa maneira, pode ser adaptado para priorizar alguma das 3 categorias em certo nível. Então, fica a cargo do usuário escolher as configurações apropriadas para o caso de uso.

Porém, armazenamentos "Key-value" como o redis, tão tipicamente construídos para priorizar disponibilidade e partição tolerante e falhas. no redis, isso se deve ao fato do Redis possuir arquitetura Master Slave e, se um Master falhar, os Redis Sentinels promovem um Slave para ser o novo Master, tornando toda a solução altamente disponível. E um mestre pode falhar (ou ficar indisponível) por vários motivos (por exemplo, falta de memória), não necessariamente devido a uma partição de rede (network partition).


DB Advantages:
  • O Redis suporta múltiplas estruturas de dados, como strings, hashes, listas, conjuntos e conjuntos ordenados. Isso permite que os desenvolvedores armazenem e manipulem dados de várias maneiras, tornando-o uma ferramenta versátil e flexível.
  • O Redis é um banco de dados em memória, o que significa que pode armazenar e recuperar dados muito rapidamente. Essa peculiaridade o torna adequado para aplicações que requerem acesso em tempo real a grandes quantidades de dados.
  • O Redis é uma ferramenta open-source, com uma comunidade muito ampla e diversos casos de usos documentados. Dessa forma, é muito prático o seu uso e apesar do seu uso específico, ele é altamente adotado.

DB Disadvantages:
  • Como o Redis armazena dados em memória, ele pode ser mais caro que usar do que outros bancos de dados que armazenam dados em disco. Isto o torna menos adequado para aplicações que requerem uma grande quantidade de espaço de armazenamento, onde a latência pode ser maior.
  • O Redis é uma aplicação single-threaded e portanto só consegue processar uma requisição por vez. Isto pode limitar seu desempenho ao lidar com um alto número de conexões simultâneas. Como o seu caso de uso geralmente é pouco "CPU Intensive" (por serem dados em memória, e não operações de E/S), isso geralmente não é um problema.
  • Apesar de ser possível utilizar a feature de Redis Cluster (que divide os dados em nós), o Redis não é um banco distribuído. Isso significa que pode ser difícil escalar conforme o volume de dados aumenta, pois não há mecanismos de "sharding" e redistribuição de carga.

Application Niches:
Devido a sua versatilidade e desempenho, a Redis tem vários casos de uso, incluindo análise em tempo real, transações de alta velocidade, caching e corretagem de mensagens. Alguns dos principais nichos para a Redis são:

  • Análise em tempo real: O armazenamento de dados na memória da Redis e o suporte para estruturas de dados como bitmaps e hiperlogs o tornam bem adequado para análises em tempo real. Isto permite que as aplicações acessem e analisem rapidamente grandes quantidades de dados em tempo real, o que é importante para aplicações como sistemas de comércio, plataformas de mídia social e e-commerces.
  • Transações de alta velocidade: O armazenamento de dados na memória da Redis e o suporte para estruturas de dados como listas, sets e ordered sets fazem com que ela seja adequada para aplicações que requerem acesso rápido e confiável aos dados. Isto faz da Redis uma boa escolha para aplicações que precisam processar um alto volume de transações, tais como sistemas de pagamento on-line e e e-commerces.
  • Caching: O armazenamento de dados na memória da Redis e o suporte para estruturas de dados como hashes e listas o tornam bem adequado para o caching. Isto permite que as aplicações acessem rapidamente os dados frequentemente utilizados, o que pode melhorar o desempenho e a escalabilidade da aplicação. O Redis é freqüentemente usado como cache em frente a um banco de dados para acelerar o acesso aos dados e reduzir a carga no banco de dados.