Alura > Cursos de Data Science > Cursos de NoSQL > Conteúdos de NoSQL > Primeiras aulas do curso Redis manipulação de dados: Strings, Listas e Conjuntos

Redis manipulação de dados: Strings, Listas e Conjuntos

Fundamentos do Redis: manipulação e recuperação de dados - Apresentação

Olá! Boas-vindas ao curso de Redis: Manipulação de Dados com Strings, Listas e Conjuntos. Meu nome é Victorino Vila e é um grande prazer ter você aqui conosco para este que será o segundo curso da formação em Redis.

Audiodescrição: Victorino é uma pessoa de pele clara, com olhos castanhos e cabelo e cavanhaque grisalhos. Está com uma blusa de frio azul escuro. Ao fundo, parede branca, sem decorações.

Neste curso, vamos explorar o Redis, um banco de dados extremamente rápido e poderoso, amplamente utilizado para otimizar aplicações de alto desempenho. Para exemplificar o uso deste banco de dados, trabalharemos em um sistema de gerenciamento de tarefas, que será uma aplicação prática, que vai nos permitir aprender e aplicar os conceitos de forma eficiente.

O que aprenderemos?

Nosso principal objetivo é aprofundar nosso conhecimento no Redis, conhecendo suas estruturas de dados e entendendo como utilizá-lo em diferentes contextos. Vamos começar com uma pequena revisão dos comandos chave-valor do tipo String, abordados no primeiro curso: os comandos GET, SET e DEL.

Em seguida, vamos entender como funcionam as listas, que são um tipo de estrutura do Redis que permite adicionar elementos no topo, no final ou até mesmo em uma posição específica da lista. Além disso, aprenderemos como remover elementos da lista, tanto pelo início quanto usando uma posição específica.

Depois, vamos explorar outra estrutura de dados do Redis, que são os conjuntos. Vamos compreender a diferença entre conjuntos e listas, aprender como incluir elementos dentro de conjuntos, transferir elementos entre conjuntos, verificar a existência de um elemento dentro de um conjunto e realizar operações entre conjuntos, como interseção, diferença e união.

Vamos sempre utilizar listas e conjuntos com um exemplo prático, tudo baseado em um sistema de gerenciamento de tarefas. No caso das listas, utilizaremos um sistema de agendamento de tarefas, onde as tarefas serão realizadas em um determinado dia e hora. Já com os conjuntos, exploraremos um sistema de gerenciamento de tarefas de um projeto de software, onde várias tarefas serão realizadas para alcançar o objetivo final do projeto. Tudo isso simulando uma aplicação real e funcional.

Vantagens do Redis

O RedisDB tem sido cada vez mais adotado por diversas empresas como um banco de dados complementar para sistemas transacionais e gerenciais. Isso ocorre porque sua altíssima velocidade e seu propósito específico o tornam um recurso valioso para potencializar as aplicações atuais, principalmente aquelas que escalam com milhares ou milhões de pessoas usuárias.

Por isso, dominar o RedisDB abre diversas oportunidades profissionais, especialmente para aqueles que conseguem enxergar como integrar outros bancos de dados e sistemas ao Redis. O Redis não substitui um banco de dados relacional ou um NoSQL tradicional, mas complementa esses sistemas adicionando eficiência e alto desempenho.

Queremos muito compartilhar todo esse conhecimento com você. Vamos começar o curso e explorar o potencial do Redis? Até o próximo vídeo.

Fundamentos do Redis: manipulação e recuperação de dados - Recuperando dados do curso anterior

Olá! Vamos começar mais um curso na formação de RedisDB. Durante a formação, estamos implementando um sistema de gerenciamento de tarefas. Por isso, aconselhamos quem não fez o curso anterior a este que o faça, para que todo mundo possa começar com o mesmo nível de conhecimento.

Para quem fez o curso anterior e não tem mais o Redis instalado, seja por estar usando outra máquina ou por ter desconfigurado a máquina utilizada anteriormente, recomendamos que volte ao curso anterior e assista novamente a primeira aula, onde o ambiente é instalado e configurado.

Apagando chaves de valor

Com o RedisDB instalado, vamos garantir que estamos com os mesmos dados. No terminal, entraremos no Linux, expandindo a opção de "Abrir Nova Guia" e selecionando "Ubuntu 22.04.5 LTS".

Primeiro, apagaremos todas as chaves de valores que temos no RedisDB atualmente. Faremos isso para recuperar essas chaves de valor através de um script, garantindo que iniciaremos com os mesmos dados dentro do RedisDB. Para isso, utilizamos o comando redis-cli --raw FLUSHDB, que conhecemos no curso anterior.

redis-cli --raw FLUSHDB

Feito isso, o Redis estará vazio.

Executando script para recriar chaves de valor

No início de cada vídeo, mostraremos um arquivo com todos os comandos executaremos. Esses arquivos estarão disponíveis para download, para que você possa repitir os passos sem a necessidade de digitar todos os comandos.

Os comandos que executaremos são extensos, com muitos textos, símbolos e caracteres diferentes. Portanto, já preparamos os comandos para que possamos apenas colá-los durante o vídeo. Mas, claro, antes disso, explicaremos o significado de cada comando.

Nosso objetivo será executar um script para criar uma série de chaves e valores dentro do RedisDB, garantindo iremos começar com um banco de dados idêntico. Para isso, na atividade anterior a este vídeo, haverá um link para download do arquivo chamado Comandos_iniciais_4443.txt.

Abrindo esse arquivo com um editor de texto, notamos que estamos executando o comando SET com uma chave, utilizando a mesma lei de formação que combinamos no curso anterior. Ou seja, o nome constante tarefa para identificar o sistema em que estamos trabalhando; a data da tarefa que precisamos realizar; a hora em que faremos essa tarefa; e um texto explicando o significado da tarefa.

Comandos_iniciais_4443.txt:

SET tarefa:2025-03-11:10_15 "Reunião com a equipe"
SET tarefa:2025-03-11:11_00 "Apresentação do portfólio da empresa"
SET tarefa:2025-03-11:14_55 "Reunião com a diretoria"
SET tarefa:2025-03-11:15_15 "Verificação de emails"
SET tarefa:2025-03-11:16_45 "Análise do novo contrato"
SET tarefa:2025-03-12:09_00 "Ir a academia"
SET tarefa:2025-03-12:10_15 "Reunião com a equipe"
SET tarefa:2025-03-12:11_00 "Apresentação do projeto de sistema de custos"
SET tarefa:2025-03-12:11_45 "Reunião de revisão das tarefas do projeto"
SET tarefa:2025-03-12:12:45 "Almoço com o cliente"

Assim, criaremos dez chaves de valores, cada chave com seu valor conforme especificado no arquivo. Basta copiar este arquivo para dentro do Linux e, em seguida, executar um comando Redis para ler os dados desse arquivo e criar as chaves de valores dentro do banco. No entanto, faremos isso de uma maneira diferente.

Vamos abrir outra janela do explorador de arquivos. Na barra de endereços, escreveremos duas barras e a sigla wsl seguida do símbolo de cifrão. A sigla WSL vem de Windows Subsystem for Linux.

\\wsl$

Quando colamos este comando na barra de endereço e pressionamos "Enter", encontraremos uma pasta que representa nosso sistema Linux. Dessa maneira, conseguimos explorar visualmente os diretórios do Linux através do explorador de arquivos do Windows.

Vamos então entrar na pasta "Ubuntu-22.04". O nosso novo diretório de trabalho será criado a partir do diretório "home". Dentro do diretório "home", encontramos o diretório que representa o nosso usuário. No caso, estamos usando o usuário "victor".

Nesse diretório, criaremos outro subdiretório chamado "redisscr", que representa Redis Scripts. Em seguida, simplesmente moveremos o arquivo TXT de comandos iniciais que acabamos de baixar para dentro do diretório /home/victor/redisscr.

Voltando ao terminal, vamos executar o comando ls com a flag -l e o caminho do diretório de trabalho para verificar todos os arquivos que estão dentro desse subdiretório:

ls -l /home/victor/redisscr

Assim, nos certificamos que o script Comandos_iniciais_4443.txt está nesse diretório. Conseguimos copiar o script da máquina local para dentro do Linux de maneira visual, através do explorador de arquivos do sistema operacional Windows.

Para recriar as chaves, executaremos um comando que aprendemos no curso anterior, que é o cat. Também devemos acrescentar o caminho do arquivo script contém os comandos que precisamos executar no RedisDB, separados por "Enter", um em cada linha. Além disso, utilizaremos a barra vertical e redis-cli.

cat /home/victor/redisscr/Comandos_iniciais_4443.txt | redis-cli

Vamos executar este comando no terminal com a tecla "Enter". São retornados dez "OK", significando que criamos dez chaves de valor no RedisDB.

Para verificar essas chaves de valores, executaremos o comando redis-cli --raw para mostrar os dados com acentos, finalizado com KEYS '*' para poder visualizar todas as chaves.

redis-cli --raw KEYS '*'

São retornadas as dez chaves que foram incluídas através da leitura do script.

Próximos passos

Agora, estamos com a mesma base. No próximo vídeo, vamos relembrar tudo o que aprendemos no curso anterior antes de começar a aprender novos conteúdos sobre o RedisDB.

Fundamentos do Redis: manipulação e recuperação de dados - Explorando comandos avançados para manipulação de Strings

Após revisar os comandos básicos do Redis, chegou o momento de aprofundar nosso conhecimento explorando comandos mais avançados na configuração de chaves de valor do tipo String, onde armazenamos no valor da chave um texto.

No sistema de gerenciamento de tarefas, muitas vezes, precisamos evitar sobrescritas indesejadas, ou seja, modificar valores já existentes, especialmente quando começamos a lidar com muita informação.

Para isso, devemos utilizar comandos que tornem nossa aplicação mais eficiente e robusta e, assim, evitar modificar uma tarefa que não desejamos alterar. Abordamos esse assunto no curso anterior, mas vamos explorar ainda mais esse conhecimento.

Conferindo conteúdo da chave

Algo que precisamos garantir é evitar incluir outra tarefa no mesmo horário. Primeiro, vamos conferir as chaves que estão no banco neste momento. No terminal Linux, vamos executar o comando que lista todas as chaves:

redis-cli --raw KEYS '*'

Saída:

tarefa:2025-03-11:10_15
tarefa:2025-03-11:11_00
tarefa:2025-03-11:14_55
tarefa:2025-03-11:15_15
tarefa:2025-03-11:16_45
tarefa:2025-03-12:09_00
tarefa:2025-03-12:10_15
tarefa:2025-03-12:11_00
tarefa:2025-03-12:11_45
tarefa:2025-03-12:12:45

São retornadas as dez chaves iniciais que carregamos no início da aula. Vamos tentar criar uma nova tarefa às 9 horas do dia 12 de março de 2025. Note que já existe uma tarefa sendo realizada nesse mesmo dia e hora.

Para verificar o conteúdo dessa chave do dia 12 de março de 2025 às 9 horas, usamos o comando GET:

redis-cli --raw GET tarefa:2025-03-12:09_00

Saída: Ir a academia

A atividade é "Ir à academia". Se digitarmos o comando SET com essa chave, não ocorrerá um erro. No entanto, isso irá substituir o valor do comando SET pelo que existe dentro do RedisDB.

Pode ser que realmente queiramos fazer isso, ou seja, alterar o texto de uma tarefa que está no banco, substituindo uma por outra. Caso não queiramos fazer isso, precisamos garantir que não vamos substituir uma tarefa que já existe ao usar um comando SET.

No curso anterior, conhecemos o parâmetro NX no final do comando SET para resolver esse problema. Mas, também existe o comando SETNX que garante que a chave-valor, ou seja, a tarefa que estamos incluindo no sistema de gerenciamento, será incluída apenas se a chave não existir.

Evitando sobrescritas indesejadas

Agora, vamos tentar incluir uma nova atividade no dia 12 de março de 2025, às 9 da manhã. Vamos usar o comando SETNX para garantir que, se já existir aquela chave, não vamos substituir seu valor. Nesse exemplo, vamos tentar incluir o texto "Revisar trabalho da equipe".

redis-cli --raw SETNX tarefa:2025-03-12:09_00 "Revisar trabalho da equipe"

Saída: 0

Obtivemos um retorno zero, significando que nada foi incluído dentro do RedisDB. Esse código zero indica o número de registros que foram manipulados no comando.

Se repetíssemos o comando GET, verificaríamos que ainda continuamos com a tarefa "Ir à academia". Isso aconteceu porque usamos o SETNX, que só inclui se a chave não existir.

Vamos agora efetuar essa atividade, "Revisar o trabalho da equipe", porém, em um horário diferente. Vamos colocar às 9h45 ainda no dia 12 de março de 2025.

redis-cli --raw SETNX tarefa:2025-03-12:09_45 "Revisar trabalho da equipe"

Saída: 1

Agora, estamos colocando um horário diferente do horário de 9h. Essa chave não existe no banco. Por isso, é retornado o número 1, indicando que um registro foi manipulado dentro do banco.

Se executamos agora o comando GET às 9h45, conferimos que a nova atividade é "Revisar trabalho da equipe".

redis-cli --raw GET tarefa:2025-03-12:09_45

Saída: Revisar trabalho da equipe

Atualizando tarefas existentes

Agora, queremos modificar uma tarefa que já existe. Em vez de usar o SETNX, usaremos somente o SET.

Iremos rodar o comando SET com a chave às 9h45 do dia 12 de março de 2025. Antes, o texto era "Revisar trabalho da equipe". Agora, atualizaremos para "Revisar trabalho da equipe de vendas":

redis-cli --raw SET tarefa:2025-03-12:09_45 "Revisar trabalho da equipe de vendas"

Saída: OK

Depois de executá-lo, recebemos um "OK", indicando que houve a atualização. Se conferimos o valor da chave às 9h45, teremos um novo texto:

redis-cli --raw GET tarefa:2025-03-12:09_45

Saída: Revisar trabalho da equipe de vendas

A melhor forma de atualizar uma chave seria usar o comando GETSET, pois ele mostra o valor antigo antes de atualizar. Digamos que queiramos modificar novamente a chave das 9h45 e acrescentar o texto "Revisar trabalho da equipe de vendas na região sul":

redis-cli --raw GETSET tarefa:2025-03-12:09_45 "Revisar trabalho da equipe de vendas da região sul"

Saída: Revisar trabalho da equipe de vendas

Quando executamos, o comando mostra o valor da chave antiga. Assim, nos certificamos que houve uma modificação do valor antigo "Revisar trabalho da equipe de vendas" para o novo valor definido no comando. Inclusive, se executamos o GET, receberemos o texto da atividade atualizada.

Recuperando múltiplas informações

Podemos também visualizar tarefas ao mesmo tempo. Em vez de usar o GET para pegar uma única tarefa, podemos utilizar o comando MGET, onde conseguimos visualizar mais de uma tarefa.

Para visualizar todas as tarefas existentes, podemos executar o comando:

redis-cli --raw KEYS '*'

Dessa vez, temos 11 tarefas e escolhemos três delas:

No comando que vamos executar, utilizamos o MGET e colocamos as tarefas separadas por espaço. Lembre-se de que o código da chave não pode ter espaço.

redis-cli --raw MGET tarefa:2025-03-12:09_00 tarefa:2025-03-12:09_45 tarefa:2025-03-12:10_15

Saída:

Ir a academia
Revisar trabalho da equipe de vendas
Reunião com a equipe

Assim, no dia 12 de março de 2025, vamos ir à academia às 9 horas, revisar o trabalho da equipe de vendas na região sul às 9h45 e participar da reunião com a equipe às 10h15.

Conclusão

Neste vídeo, exploramos os comandos mais avançados de manipulação de strings. Agora que compreendemos melhor como evitar sobrescritas, atualizar valores com certo controle e recuperar múltiplas informações com um único comando, podemos continuar a evoluir o nosso sistema de gerenciamento de tarefas. Até o próximo vídeo!

Sobre o curso Redis manipulação de dados: Strings, Listas e Conjuntos

O curso Redis manipulação de dados: Strings, Listas e Conjuntos possui 164 minutos de vídeos, em um total de 57 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:

Aprenda NoSQL acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas