Olá! Seja bem-vindo ao curso de Desempenho, Escalabilidade e Monitoramento no Redis, parte da nossa formação. Eu sou Vitorino Vila, e é uma grande satisfação ter você conosco para dar mais um passo em sua jornada como profissional de tecnologia.
Audiodescrição: Vitorino é um homem de pele clara, cabelo curto castanho e olhos castanhos. Ele veste uma camisa azul e está em um ambiente de escritório com uma estante de livros ao fundo.
O que vamos abordar neste curso? Vamos colocar em prática os conceitos do Redis, uma ferramenta extremamente poderosa, não apenas como banco de dados, mas como um componente essencial em arquiteturas de sistemas que exigem alta performance.
Nas aulas específicas deste curso, simularemos uma carga real de dados em nosso sistema de gerenciamento de tarefas e realizaremos estatísticas de benchmark desse ambiente. Utilizaremos ferramentas como o Redis Benchmark, as cláusulas Info, Monitor, Slow Log e Common Stats para coletar estatísticas do ambiente.
Além disso, aprenderemos a implementar a replicação de dados dentro do Redis, criando uma arquitetura master-slave. Testaremos o que ocorre em caso de falha e como promover o slave a master quando o master não estiver funcionando.
Vamos analisar como os dados fluem entre essas duas instâncias. Neste curso, também vamos preparar o ambiente de clusterização do Redis. Nós vamos criar nós que funcionarão como se fossem um único sistema. Esses nós receberão as chaves através do Redis, e o próprio Redis distribuirá essas chaves ao longo dos nós.
Vamos observar o que acontece quando um nó falha e como conseguimos recuperar esses dados, mesmo com um nó não funcionando. Finalmente, revisaremos aquelas métricas vistas no início do curso, coletaremos as estatísticas e as salvaremos em relatórios automáticos.
Tudo isso é muito importante, pois o Redis está sendo amplamente utilizado pelas empresas como complemento de seus sistemas, já que se trata de um banco de dados não SQL que grava dados através de chave-valor e consegue recuperá-los rapidamente. Portanto, conhecer o Redis hoje é um grande diferencial no mercado.
Vamos juntos? Preparem o ambiente, abram o terminal e venham conosco para mais essa jornada prática e direta, como o Redis exige. Nos veremos na primeira aula. Até o próximo vídeo.
Olá, pessoal. Vamos iniciar mais um curso da formação RedDB. Recapitulando, já concluímos quatro cursos dessa formação, nos quais criamos um sistema de gerenciamento de tarefas. Na verdade, desenvolvemos dois sistemas de gerenciamento: um baseado em data e hora, onde tínhamos tarefas agendadas, e outro para armazenar tarefas relacionadas ao projeto de implementação de um software. No último curso, trabalhamos com a administração do Redis, abordando persistência, backup e segurança.
Neste curso, continuaremos com a parte administrativa, mas focaremos em desempenho, escalabilidade e monitoramento. Como temos feito nos cursos anteriores, é importante recuperarmos a base para que todos comecem de maneira uniforme. Para isso, nas atividades a seguir deste vídeo, haverá um link para download do arquivo 4.4.4.6
. Após descompactá-lo, vocês encontrarão dois subdiretórios. Dentro do diretório "arquivos", há uma série de arquivos que utilizaremos não apenas para recuperar a base neste momento, mas também ao longo do curso.
Vamos então retornar ao Linux. A primeira ação será parar o Redis. Tenho aqui a lista de comandos que executaremos neste vídeo. Primeiramente, vamos parar o Redis. Para isso, utilizamos o seguinte comando:
sudo systemctl stop redis
Em seguida, apagaremos os arquivos que refletem a base de dados atual no ambiente. Esses arquivos são: append-only.aof
, dump.rdb
, Redis.conf
e users.scl
. Vamos começar apagando o append-only.aof
:
sudo rm -f /var/lib/redis/appendonly.aof
Depois, apagamos o dump.rdb
:
sudo rm -f /var/lib/redis/dump.rdb
Em seguida, o Redis.conf
:
sudo rm -f /etc/redis/redis.conf
E finalmente o users.scl
:
sudo rm -f /etc/redis/users.scl
Agora, navegaremos pelo Explorador do Windows, dentro dos diretórios do Linux, até o nosso diretório de trabalho, que está localizado em "home" seguido do nome do nosso usuário do Linux. Já tenho ele aberto, mas vou abrir novamente para relembrarmos como proceder. No explorador de arquivos do Windows, digitamos \\WCL$
, seguido do nome do nosso servidor, "home", o nome do usuário, e "RedisSR". Chegamos ao local desejado. Vamos criar um diretório chamado 4446
:
mkdir 4446
Dentro desse diretório, nós vamos copiar os quatro arquivos que vieram do link de download, os quais são necessários para podermos recuperar a base. Os arquivos que devemos copiar são: append-only.aof
, dump.rdb
, Redis4446.conf
(no meu caso, não está aparecendo a extensão do arquivo, mas ele é um arquivo .conf
), e users4446.sl
. Vamos copiá-los e colá-los no diretório já dentro do Linux.
Agora, vamos copiar esses arquivos que estão no diretório de trabalho do Linux para os diretórios corretos dentro do Redis, para que, quando iniciarmos o Redis novamente, a base de dados já esteja carregada. Voltando ao ambiente Linux, vamos copiar do diretório de trabalho. Se estiverem utilizando o script para repetir os comandos, lembrem-se de substituir o nome do meu usuário pelo nome do usuário de vocês. Vamos copiar o primeiro arquivo:
sudo cp /home/victor/redisscr/4446/appendonly.aof /var/lib/redis/
O segundo arquivo:
sudo cp /home/victor/redisscr/4446/dump.rdb /var/lib/redis/
O terceiro arquivo:
sudo cp /home/victor/redisscr/4446/redis4446.conf /etc/redis/redis.conf
E o último arquivo, que é o arquivo dos usuários:
sudo cp /home/victor/redisscr/4446/users4446.scl /etc/redis/users.scl
Agora, precisamos alterar as permissões dos arquivos, pois, muitas vezes, quando copiamos arquivos do Windows para o Linux, as permissões não vêm configuradas corretamente. Primeiro, vamos mudar a permissão do append-only.aof
:
sudo chown redis:redis /var/lib/redis/appendonly.aof
E do dump.rdb
:
sudo chown redis:redis /var/lib/redis/dump.rdb
Vamos alterar os privilégios de acesso dos arquivos através do chmod
, utilizando a configuração 660, para que possamos acessar esses arquivos ao iniciar o Redis. Estamos alterando agora a permissão do aof
:
sudo chmod 660 /var/lib/redis/appendonly.aof
E do rdb
:
sudo chmod 660 /var/lib/redis/dump.rdb
Pronto, agora vamos iniciar o serviço, colocando o Redis no ar novamente:
sudo systemctl start redis
Esperamos que não ocorram erros. Pronto, o Redis foi iniciado novamente, e podemos, por exemplo, executar um comando para ver todas as chaves existentes nessa base de dados que foi recuperada. Vamos rodar um:
redis-cli --raw -a "SuperSenhaSegura123" KEYS "*"
Ao fazer isso, ele mostrará uma série de chaves, indicando que a base de dados está pronta e podemos começar o nosso curso.
Vamos encerrar este vídeo por aqui, e no próximo vídeo iniciaremos o curso complementando toda a parte de administração do Redis. Até o próximo vídeo.
Vamos iniciar uma nova fase no desenvolvimento do nosso sistema de gerenciamento de tarefas. Antes de aplicarmos os comandos para diagnosticar e otimizar esse ambiente, vamos observar como o sistema se comporta sob uma situação de estresse. Para isso, simularemos um ambiente com muita carga dentro do Redis, pois nosso objetivo é gerar um cenário mais próximo do real, com um grande número de tarefas. Assim, poderemos realizar um diagnóstico do ambiente.
Vamos começar inserindo algumas novas tarefas, hashes, dentro do sistema de gerenciamento de tarefas. Na parte onde estamos desenvolvendo tarefas para a construção de um software, temos os comandos para fazer isso. Vamos criar as chaves número 100, 101, 102 e 103.
Para criar a chave número 100, utilizamos o seguinte comando:
redis-cli --raw -a SuperSenhaSegura123 HSET tarefa:DevSoftware:00100 descricao "Realizar integração contínua" responsavel "Leticia Souza" status "Pendente" prioridade "Alta" categoria "DevOps"
Esse comando insere uma nova tarefa com a descrição "Realizar integração contínua", responsável "Leticia Souza", status "Pendente", prioridade "Alta" e categoria "DevOps".
Continuando, criamos a chave número 101:
redis-cli --raw -a SuperSenhaSegura123 HSET tarefa:DevSoftware:00101 descricao "Configurar servidor de staging" responsavel "Marcelo Dias" status "Executando" prioridade "Media" categoria "Infraestrutura"
Aqui, a tarefa é "Configurar servidor de staging", com o responsável "Marcelo Dias", status "Executando", prioridade "Média" e categoria "Infraestrutura".
Prosseguimos com a chave número 102:
redis-cli --raw -a SuperSenhaSegura123 HSET tarefa:DevSoftware:00102 descricao "Validar regras de negócio" responsavel "Juliana Nunes" status "Pendente" prioridade "Alta" categoria "Testes"
Esta tarefa é "Validar regras de negócio", atribuída a "Juliana Nunes", com status "Pendente", prioridade "Alta" e categoria "Testes".
Finalmente, criamos a chave número 103:
redis-cli --raw -a SuperSenhaSegura123 HSET tarefa:DevSoftware:00103 descricao "Ajustar layout mobile" responsavel "Caio Oliveira" status "Executando" prioridade "Média" categoria "Design"
A tarefa "Ajustar layout mobile" é de responsabilidade de "Caio Oliveira", com status "Executando", prioridade "Média" e categoria "Design".
Também podemos trabalhar com as tarefas agendadas usando o ZADD
, ou seja, criando um sorted set onde os detalhamentos da tarefa estarão dentro de um JSON. Vamos associar tarefas que serão realizadas no dia 25 de abril de 2025.
Para adicionar uma tarefa às 9h, usamos:
redis-cli --raw -a SuperSenhaSegura123 ZADD tarefa:2025-04-25 900 '{"hora": "09:00", "descricao": "Revisar backlog com equipe", "responsavel": "Bruna Lopes", "prioridade": "Alta"}'
Essa tarefa é "Revisar backlog com equipe", com "Bruna Lopes" como responsável e prioridade "Alta".
Adicionaremos mais uma tarefa, que será executada às 11h30 da manhã:
redis-cli --raw -a SuperSenhaSegura123 ZADD tarefa:2025-04-25 1130 '{"hora": "11:30", "descricao": "Atualizar status no jira", "responsavel": "Felipe Mendes", "prioridade": "Média"}'
A terceira tarefa será às 14h:
redis-cli --raw -a SuperSenhaSegura123 ZADD tarefa:2025-04-25 1400 '{"hora": "14:00", "descricao": "Sprint Review com cliente", "responsavel": "Renata Dias", "prioridade": "Alta"}'
E mais uma tarefa naquela mesma data, às 16h30:
redis-cli --raw -a SuperSenhaSegura123 ZADD tarefa:2025-04-25 1630 '{"hora": "16:30", "descricao": "Deploy para staging", "responsavel": "Tiago Rocha", "prioridade": "Alta"}'
Para estressarmos realmente o Redis, precisamos adicionar mais chaves. Uma maneira rápida de fazer isso é utilizando um loop via script do Linux e os comandos seq
e xargs
, conseguimos criar múltiplas entradas rapidamente no Redis. Estamos falando de um comando no qual criamos uma sequência que vai de 200 a 250, ou seja, trabalhamos com 50 chaves.
seq 200 250 | xargs -I{} redis-cli --raw -a SuperSenhaSegura123 HSET tarefa:DevSoftware:{} descricao "Tarefa simulada {}" responsavel "Usuário Teste" status "Pendente" prioridade "Alta" categoria "Simulacao"
Foram criadas várias tarefas, como devsoft 200
, devsoft 201
, devsoft 202
até devsoft 250
, pois utilizamos esse loop. Também podemos, para as tarefas agendadas, inserir uma série de outras tarefas, como 800
, 900
, 1000
, 1100
, 1200
, ou seja, essa sequência de valores.
for h in 800 900 1000 1100 1200 1300 1400 1500; do
redis-cli --raw -a SuperSenhaSegura123 ZADD tarefa:2025-04-26 $h "{\"hora\": \"$(h:0:2):$(h:2:2)\", \"descricao\": \"Tarefa horário $h\", \"responsavel\": \"Sistema\", \"prioridade\": \"Média\"}"
done
Nesse caso, criamos uma série de tarefas que estarão armazenadas dentro da base de dados utilizando um JSON, onde o horário foi substituído por essa sequência especificada. Na data de 26/04, teremos tarefas às 8 horas, 9 horas, 10 horas, 11 horas, meio-dia, 13 horas, 14 horas e 15 horas.
Com isso, criamos um cenário que se aproxima do realista, onde temos dezenas de chaves de diferentes tipos dentro do Redis. Esses dados que incluímos serão a base para nossos próximos vídeos, nos quais faremos o monitoramento e ajustes de desempenho.
Até o próximo vídeo!
O curso Redis: desempenho, escalabilidade e monitoramento do Redis possui 193 minutos de vídeos, em um total de 55 atividades. Gostou? Conheça nossos outros cursos de NoSQL em Data Science, ou leia nossos artigos de Data Science.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.