Dando sequencia aos posts sobre quando usar cada tipo de banco de dados NoSQL, hoje conversaremos sobre o Redis.
Estamos no terceiro post da série, e se você não viu os outros, dá uma olhada nos links:
- SQL OU NOSQL? (PARTE 1)
- SQL ou NoSQL? (Parte 2 – Porque MongoDB?)
- SQL ou NoSQL? Parte 3 – Quando usar o Neo4J?
Este deveria ser o último post da série, mas eu não resisti, porque estou com saudade de dois amigos queridos, e um deles trabalha na Redis Labs “loucura modo on” (Giovanna Motta e Kyle Owen S2)
O Redis tem algumas particularidades bem bacanas que podem levar seu projeto para outro nível! E antes de começar eu preciso que você conheça algumas premissas fofas:
- É um banco de dados NoSQL, open source e que tem uma versão enterprise. Logo tenha cuidado com a licença.
- Dividindo os bancos de dados NoSQL em categorias, nós temos:
- Documentos: MongoDB é o mais usado
- Grafos: Neo4J é o mais usado
- Colunar: Cassandra é o mais usado (nosso próximo post)
- Chave-Valor: Redis é o mais usado
- Em um banco de dados chave-valor, todas as consultas são feitas na chave e o retorno para a aplicação é um valor.
- Normalmente usado como banco de dados secundário
- Os dados ficam na memória.
- Me prometa que você nunca criará estruturas, onde uma chave tem a referência para outra chave, e na outra chave está o valor. Isso é uma péssima prática e pode ser um problema em pouco tempo. #DicaDaTiaDani
O que é o Redis?
A sigla que significa Remote Dictionary Server.
Ele é um banco de dados NoSQL, do tipo chave-valor e que armazena os dados em memória, e por isso o primeiro ponto de atenção é a escolha do hardware correto.
Nada impede o Redis de ser o banco de dados principal da sua aplicação, mas normalmente não faz sentido, porque o dados estão em memória e ela é volátil.
Lembre-se que nesse banco de dados os comandos são atômicos, de forma que a ordem de execução das operações é a mesma ordem das chamadas.
Outra característica muito importante, é que podemos criar as chaves e determinar por quanto tempo elas devem existir. Passado o tempo configurado, as chaves são deletadas automaticamente (característica bem comum em sessões de usuário e carrinhos de compras, por exemplo).
Outra coisa muito importante é que para usar o Redis é indispensável entender como a aplicação vai acessar os dados, de forma que sejam escolhidas as melhores chaves, sendo repetitiva, lembre-se que:
- Toda consulta é feita pela chave, para retornar para a aplicação um valor;
- As chaves e os valores estão em memória;
- Redundancia de dados não é um problema tão grave quanto uma chave armazenando outra chave (isso n vezes) para depois acessar um valor.
Tipos de Dados
Eu sempre pensava em um banco de dados chave valor como uma string associada a outra string… Eu me empolguei com o Redis quando descobri que ele pode ter nos valores algumas estruturas de dados diferentes. O site da AWS Redis resumiu lindamente os tipos de dados do Redis (obrigado amigos!):
- Strings – dados em texto ou binários com tamanho de até 512 MB
- Listas – uma coleção de strings na ordem em que foram adicionadas
- Conjuntos – uma coleção não ordenada de strings com o recurso de executar operações de intersecção, união e diferente com outros tipos de conjuntos
- Conjuntos ordenados – conjuntos ordenados por um valor
- Hashes – uma estrutura de dados para armazenar uma lista de campos e valores
- Bitmaps – um tipo de dados que oferece operações com bits
- HyperLogLogs – uma estrutura de dados probabilística para estimar os dados únicos em um conjunto de dados
Para fazer operações de leitura e escrita com os dados no REDIS é indispensável entender os tipos de dados, porque a maioria dos comandos dependem do tipo de dados do valor.
Quando usar o Redis
Para os desenvolvedores é simples usar o Redis, e ele pode ser um diferencial incrível para muitas aplicações, porque ele é muito, muito rápido!
O Redis é fenomenal nas seguintes situações:
- Cache de aplicações
- Banco de dados secundário
- Alto volume de dados
- Filas
- Mensageria
- Chat
- Itens que tem tempo de duração determinado
- Analises em tempo real
Qual versão do Redis?
Temos algumas opções fofas de uso do Redis. Para produção, algumas decisões precisam ser tomadas:
- Seu servidor
- Pode ser instalado no seu servidor, ou em uma VM. Cuidado com a quantidade de memória disponível e a quantidade necessária;
- Atenção com a versão usada… Se você optar pelo uso da versão Community avalie a licença e as diferenças com a versão Enterprise;
- Docker
- Existe uma imagem oficial, e pode ser uma boa alternativa para testes. Nunca vi sendo usado em produção (se você já usou, compartilha conosco a sua experiência);
- Cloud
- É excelente quando você precisa ter uma solução flexível , que pode ser escalada horizontalmente ou verticalmente, e você paga pelo quanto usar.
- Podem ter algumas diferenças da “versão oficial” do Redis
- Temos algumas possibilidades bacanas de Banco de Dados como Serviço (DBaaS)
- Cache Redis do Azure https://azure.microsoft.com/pt-br/services/cache/
- Versão da Redis https://www.redislabs.com/redis-enterprise-cloud/
- Amazon ElastiCache para Redis https://aws.amazon.com/pt/elasticache/redis/?ch=ns&loc=1
- Google CLOUD MEMORYSTORE https://cloud.google.com/memorystore/?hl=pt-br
Para finalizar o post e sem fechar o assunto…
Dando continuidade para a nossa super planilha, adicionei mais uma aba, indicando quando usar o Redis.
Lembre-se que a planilha é nossa, então fique à vontade para mandar suas colaborações.
Referências
Autora
Danielle Monteiro (Dani para os meus amigos)
Parceiros
Como em todo post… Momento propaganda do patrocinador!
A SPEsportes, é uma loja super legal, com produtos incríveis e preço justo! Os leitores do blog tem desconto de 20% em todos os produtos, informando o cupom de desconto DB4BEGINNERS
Se a sua empresa quiser ser parceira também, temos algumas possibilidades.