Você conhece o Redis?

Você conhece o Redis?

Administradores de sistemas e desenvolvedores provavelmente em algum momento já precisaram de alguma solução para armazenar dados temporários – como token de sessão – que sejam acessíveis de um ponto comum entre todas as aplicações e/ou serviços, como o Memcached, mas você já conhece o Redis?

O Redis é um é um software open source de armazenamento de dados chave-valor em memória, atualmente é o mais popular no mundo – segundo o db engine (https://db-engines.com/en/ranking/key-value+store), muito utilizado pelo seu cache e gerenciamento de sessões. Ele é considerado a melhor opção devido ao seu alto desempenho por conta do armazenamento dos dados serem em memória ao invés do tradicional em discos, com isso evita atrasos no tempo de busca e consumo de instruções de CPU.

Características

Redis é escrito em ANSI C e é compatível com a maioria dos sistemas POSIX – Linux, BSD e OS X -, porém sua implantação é recomendada em Linux. Até o momento não há suporte oficial para Windows. Podemos dizer também que ele permite que os usuários façam usos de chaves que facilitam o mapeamento para vários tipos de dados. Possui compatibilidade de diversas linguagens de desenvolvimento, além de possuir compatibilidade com snapshots, armazenando cada alteração de dados em disco conforme a gravação.

Possui também replicação nativa (master-slave), sendo a réplica uma cópia fiel do principal e reconectando-se automaticamente caso algum problema de comunicação ocorra. Quando restabelecida a conexão, automaticamente é tentado uma ressincronização parcial para que ambos fiquem idênticos, caso não seja possível é realizado um snapshot e enviado para a réplica, após isso atualizado com as instruções mais recentes. Por padrão essa replicação é assíncrona.

Redis Sentinel é uma ferramenta que provê alta disponibilidade para o Redis sem intervenção humana para certos tipos de falhas. O Sentinel ainda pode ser utilizado para realizar o monitoramento de todas as instâncias Redis (master e réplicas), notificações de eventuais problemas com as instâncias podem ser enviadas para os administradores de sistemas ou outros softwares através de API, podendo também realizar o failover automático promovendo uma réplica à master e atualizando todas as outras réplicas a procurarem o novo master, além de ser uma autoridade para descoberta de serviço provendo para os clients a configuração do cluster com o endereço do master.

O Redis ainda possui a persistência de dados, tendo como opções:

  • RDB: que irá realizar snapshots do estado atual em um intervalo especificado;
  • AOF: que irá armazenar logs de cada operação de escrita, realizando uma verificação do estado dos dados sempre que o servidor for iniciado.

É possível utilizar os dois métodos simultaneamente para garantir a integridade dos dados.

O Redis pode ser facilmente implantando com a utilização de containers, pois já há imagens muito estáveis no DockerHub que agilizam a disponibilização da solução.

Alguns Casos de uso

  • Armazenamento em cache: Quando utilizado recebendo as requisições primeiro que outros bancos de dados, é criado um cache em memória de alto desempenho diminuindo a latência na busca de dados estáticos e a carga nos bancos de dados que ficaram atrás dele, gerando maior performance para respostas de outras requisições.
  • Gerenciamento de sessões: Ele é altamente recomendado para controle de sessões que necessitam de persistência, como jogos, e-commerce e mídias sociais, utilizando ele como armazenamento de chave-valor com o tempo de vida correto nas chaves de sessão.
  • Lista: É uma das estruturas de dados que facilita implementar uma fila leve e persistente. As listas oferecem operações atômicas, além de recursos de bloqueio, tornando-as adequadas para várias aplicações que exigem um agente de mensagens confiável ou uma lista circular.

Quem usa o Redis?

Grandes empresas como Twitter, GitHub, Snapchat e StackOverflow utilizam esta tecnologia, o que nos passa maior credibilidade ainda sobre o potencial desta ferramenta.

 

Esta foi apenas uma introdução à ferramenta, e nos próximos posts veremos mais detalhes de cada função, como realizar a implementação, configuração e melhores práticas.

Até mais!

CURSOSCONSULTORIACONTATO

Anterior Conhecendo o Kernel Linux pelo /proc (Parte 2) - Memória
Próxima Open Source: de que lado da história você está?

About author

Ricardo Caeiro
Ricardo Caeiro 5 posts

Ricardo Caeiro é formado em Redes de Computadores pela BandTec, MBA DevOps Engineering pela FIAP, possui mais de 10 anos de experiência na área da tecnologia da informação, já atuou em diversas frentes da área e hoje realiza consultoria e treinamento de tecnologias de software livre com ênfase em middleware e cultura DevOps.

View all posts by this author →

Você pode gostar também

Infraestrutura

Primeiros passos com OpenStack

Sempre que falamos sobre “primeiros passos”  em alguma tecnologia, realizamos algum pequeno teste como um “Hello World” em uma linguagem ou um pequeno blog quando estamos estudando um framework web

Infraestrutura

Realizando videoconferências no Rocket.Chat

Introdução Rocket.Chat Rocket.Chat, é uma plataforma de chat Open Source lançada no final de 2014. Após a aplicação estar pronta seu código não foi prontamente aberto. A abertura do código

Infraestrutura

Configuração do Moodle Universal Cache (MUC)

O que é O MUC (Moodle Universal Cache) é um tipo de cache e um cache nada mais é do que um repositório de dados, que torna mais fácil e