Primeiras aulas do curso Redis II: estruturas e recursos na sua base NoSQL

Redis II: estruturas e recursos na sua base NoSQL

Ultimas notícias - As últimas notícias

Boas-vindas ao curso de Redis II: Estruturas e recursos na sua base NoSQL. Já sabemos usar Redis para resolver diversos problemas do mundo real, utilizando strings, tipos numéricos, sejam inteiros ou decimais, até mesmo tipos que representam zero e um em conjuntos longos, uma sequência enorme de zeros e uns.

Desta maneira, foi possível fazer operações para decidir quem visitou em vários dias, quem foi que fez determinada ação, determinados dias, determinadas situações, quem fez em uma ou outra situação.

Tem muita coisa legal que você consegue fazer, o que seria da vida de um programador se não tivesse mais problema para resolver? Vamos ter mais problemas para resolver, problemas extremamente comuns que você vai encontrar em diversos sites de notícia, quais são as últimas notícias.

Vamos considerar as cinco últimas notícias, porque eu quero que apareça em todas as páginas, no site da Folha, no site da Globo, entra no site do R7, Uol, seja lá qual for, você vai ter as cinco últimas notícias, as 10 últimas notícias.

Você tem de manter as últimas notícias atualizadas, quer dizer eu não quero manter só uma informação no Cache memória para trazer rapidinho, eu quero manter cinco informações, as cinco últimas notícias, ou, por exemplo, no site da Alura mostra os três últimos depoimentos.

Ou como eu posso em curso específico três últimos depoimentos daquele curso, como eu posso fazer para armazenar os três últimos textos, os três últimos usuários logados, os três últimos amigos logados.

Como eu posso armazenar uma lista de valores de um tamanho determinado, então quer dizer eu quero armazenar na memória de maneira extremamente rápida lista de valores.

Onde usa uma lista das últimas notícias que eu vejo todo dia? No Twitter você entra e é possível ver as suas últimas mensagens que apareceram por ordem cronológica, tem uma série de mensagens, isso seria muito interessante se estivesse na memória.

E adivinha, Twitter acaba usando ferramentas baseadas no Redis para manter na memória lista de mensagens, que está lá dizendo quais são as últimas mensagens que você recebeu ou algo do gênero.

E pode querer usar o Redis para armazenar não só uma String, não só número, não só um conjunto de bits zero um, não só conjunto de valor, mas também uma lista e vai ver como usar uma lista para resolver o problema das últimas notícias, dos últimos depoimentos.

Ultimas notícias - Listas, ordenação e limites

Vamos tentar modelar como seria um sistema de notícias, das últimas três notícias de um site, últimos três depoimentos, últimos usuários logados, últimos qualquer coisa, uma quantidade limitada de alguma coisa que eu quero armazenar na memória.

Para poder trazer rápido ao meu usuário final, no meu caso eu vou ter três notícias, as três últimas notícias eu quero armazenar na memória; a minha primeira notícia da minha sessão de fofocas do jornal é que o jogador de futebol foi flagrado jogando basquete na rua.

Onde já se viu uma coisa dessas? Então é uma notícia, super notícia, eu coloco uma listinha. Como fazer uma listinha das últimas notícias? Você tem que escrever uma das últimas notícias.

Eu escrevi a lista, ela é: jogador de futebol é flagrado jogando basquete na rua, escrevi. Chegou uma notícia nova, mais uma notícia eu vou escrever a segunda notícia, mas na hora de escrever, eu quero deixar a mais recente sempre mais em cima.

A nova notícia de que Novo Curso de Redis é lançado pela Alura, eu quero deixar mais para cima antes de todas as outras notícias que chegaram.

Eu quero deixá-la antes, na frente, se eu pensar que é em cima e embaixo é em cima, você pensa que é esquerda e direita, é esquerda, quero deixar antes certo. Estou deixando a minha notícia antes das notícias que já existiam.

Então toda notícia nova que chega, eu escrevo antes, porque fico com a minha listinha ordenada, bonita, com a última notícia, penúltima notícia, antepenúltima, a ante antepenúltima e assim por diante.

É só você ir inserindo antes, se eu tenho uma listinha de cima para baixo, em cima você tem uma listinha, da esquerda para direita é à esquerda, estou colocando a notícia do novo curso de Redis lançado pela Alura antes, em cima ou na esquerda das minhas notícias atuais.

Chegou uma notícia nova, outra super notícia quentíssima no jornal de fofoca, jogador de basquete encontrado jogando futebol na quadra, impressionante, então que faz com essa notícia? Coloca ela na nossa lista de notícias, onde? Depois das notícias mais recentes?

Não, antes das que tenho até agora, isso é se as notícias estão de cima para baixo coloca lá em cima como a mais recente, se elas estão da esquerda para direita coloco o mais para esquerda possível para dizer que ela é mais recente possível.

Eu deixo sempre ordenado e assim que eu escrevo no papel as últimas notícias ou algo do gênero, quando entrar uma quarta notícia, por exemplo, Guilherme Silveira faz aniversário e espera presente sentado.

Se eu escrevo a última notícia, coloco ela lá em cima quarta notícia ,só que daí eu me pergunto “eu só preciso de três últimas notícias, eu não quero saber a quarta mais recente notícia” não estou interessado na quarta notícia mais recente.

Eu só quero as três notícias mais recentes, pergunta qual o tamanho da minha lista de notícias nesse instante? Eu não estou interessado em quatro notícias, estou interessado na primeira, segunda e terceira última notícia.

Nas três mais recentes, então o que eu faço com essa minha lista se eu já tenho tudo ordenado é só jogar fora tudo que não são as três primeiras. Pega essas três primeiros segura, joga fora as outras.

Mantenha somente as notícias, as três primeiras. Todo instante que chegar uma notícia nova, coloco a notícia na frente, em cima ou à esquerda, depende do ponto de vista, coloca a notícia antes das outras na minha fila.

E tiro dessa fila de notícias, eu vou tirando lá do final, eu vou colocando no começo e vou tirar do final, sempre colocando, no começo, uma nova notícia e vou tirando do final as que estão sobrando, as notícias que já ultrapassaram as últimas notícias.

Assim eu consigo armazenar uma lista com as últimas notícias, vamos colocar número nessas notícias? Eu vou começar do zero de novo com a primeira notícia, a notícia de número zero.

Quando estamos no computador em geral todas as listas que trabalha começa com a posição zero. Minha lista nada mais natural que ela comece com a posição zero.

Quando eu inserir uma notícia na minha lista estará na posição zero. Agora tenho mais uma notícia para inserir, quero inserir essa notícia no topo, na esquerda dessa minha fila de notícias, dessa minha lista de notícias.

Antes de todos os outros elementos, de todas as notícias, a minha nova notícia vai aparecer na nova posição zero e aquela outra notícia que estava na zero desceu para posição um, o que acontece se eu tentar adicionar nova notícia de novo?

Jogador de basquete eu coloco essa nova notícia na esquerda, lá no começo de todo mundo, posição zero, todas as outras notícias 1 e 2 vamos ver, um e dois.

Agora você coloca mais uma nova notícia, quer dizer coloca uma quarta notícia de novo lá na esquerda, em cima, no começo da minha lista, coloca nova notícia que o Guilherme faz aniversário.

Que eu faço com as outras listas, com os outros elementos? Desloco tudo para baixo e eu tenho as minhas notícias, as minhas quatro notícias, mas você fala “Guilherme, não era para ter quatro notícias, era só para manter três”.

Eu aparo as pontas, acima é do zero mesmo, eu quero a mais recente, do 3 em diante vou jogar fora, então eu falo para ele “mantém na memória do zero ao dois, a minha lista as posições de zero a dois” que são as que estou interessado, o resto joga fora.

Sempre que eu adicionar novo item, basicamente vou adicionar no começo da minha lista, estou pensando na lista de cima para baixo em cima, da esquerda para direita esquerda, adiciona no começo da lista e depois apara a ponta.

Joga fora o que está do 3 em diante e tem a nossa lista de últimas notícias e assim consegue manter eternamente uma lista de umas notícias. Se alguém quiser me pedir “me dê a lista de últimas notícias” quanto tempo demoro para dar a lista das três últimas notícias? É um tempo linear, bateu passar esse, esse e esse.

Eu passo para você e se toma rápido, passar por essa minha lista de notícias, entregar para você é extremamente rápido, ainda mais que o Redis está com esses dados na memória. Essa é a maneira que armazena uma lista de últimas notícias na memória. Falta descobrir como mandar o Redis fazer isso e veremos daqui a pouco.

Ultimas notícias - LPUSH e LTRIM

Está na hora de falar ao Redis para criar uma lista de elementos, no meu caso a minha lista de alimentos vai representar as últimas notícias e a primeira coisa que eu quero fazer é mandar inserir um único elemento.

Por favor enfie dentro dessa lista da lista de últimas notícias, coloque dentro da lista um elemento “jogador de futebol é flagrado jogando basquete na rua” é esse o elemento que eu quero colocar na minha lista, mas em que posição da minha lista?

Pensa que uma lista no Redis é uma sequência de elementos da esquerda para direita, quer dizer, o elemento do começo a posição zero é o elemento da esquerda, quero colocar na esquerda da minha lista um elemento.

Quero falar para o Redis, por favor coloque na esquerda, left o elemento “jogador de futebol é flagrado jogando basquete na rua”, eu preciso falar o nome da minha chave que vai armazenar essa lista, a chave será últimas notícias.

Quero falar para ele colocar puxe na esquerda/left nas últimas notícias “jogador de jogador de futebol é flagrado jogando basquete na rua” essa minha notícia, então quero falar para ele left push.

Últimas notícias “jogador de futebol” etc. left da esquerda push coloque na esquerda dessa minha lista de itens esse elemento. Chegou a segunda notícia como é que eu faço para colocar agora essa segunda notícia na esquerda da minha lista?

Antes de todos os elementos que já existem na minha lista, vimos isso, acabamos de ver: eu quero colocar push na esquerda left nas últimas notícias “novo curso de Redis é lançado pela Alura”, então LFPUSH ultimas_noticias“Novo curso..”, chegou mais uma notícia, cada vez que chega notícia, quero colocar um elemento na esquerda da minha lista do redis.

Coloca elemento numa lista do Redis na esquerda, no começo, na posição zero da minha lista, empurro tudo para direita, left push, LPUSH chave últimas notícias, valor jogador de basquete.

A partir da versão 2.4 do Redis esse LPUSH você pode colocar muitos elementos, primeiro, espaço outro elemento, espaço outro elemento, pode colocar vários; eu estou colocando uma notícia por vez, porque uma notícia postada por vez.

Chegou a quarta notícia, LPUSH nessa última notícia “Guilherme Silveira...” vai dando LPUSH vai colocando elementos no começo da nossa lista. Você fala “Guilherme, falei que queria só três elementos nas últimas notícias, não 4”.

Se eu ficar apenas adicionando essa lista vai crescendo, em algum instante depois de 4 bilhões de elementos, alguma coisa do gênero, ela vai estourar eu não quero, só quero as três últimas notícias, pode jogar o resto fora.

Pode aparar o resto, como eu falo para aparar? Aparar as pontas em inglês é trim então quero falar para ele “por favor “trima”, faz o “trim” de tudo exceto esses três primeiros elementos”, mantém os elementos de 0 até 2.

Ou seja, “trima” as últimas notícias, mantendo só zero, um e dois, isso é LTRIM ultimas_noticias 0,2.

Estou falando para ele: “trima” para mim o 0, 1 e 2 ele vai manter só 0, 1 e 2. O resto todo vai embora da memória. Vamos ver tudo isso funcionar.

Sobre o curso Redis II: estruturas e recursos na sua base NoSQL

O curso Redis II: estruturas e recursos na sua base NoSQL possui 123 minutos de vídeos, em um total de 51 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!

Plus

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$85
à vista R$1.020
Matricule-se

Pro

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas