pessoal vamos falar agora um pouquinho do Redis pessoal quando a gente está falando do Redis primeira coisa, eu sou um cara que eu sou bem fã do Redis então eu vou falar de forma mais puxando a sardinha para ele mesmo porque eu acho que é uma ferramenta muito boa muito bacana da gente usar Redis é um Remote Dictionary Server e o que ele faz? é um armazenamento de dados em memória ele é muito rápido e ele é muito utilizado ali como banco de dados de memória em cache. E broker de mensagem também, tem bastante gente que usa ele como broker de mensageria. O que a gente tem que pensar? É o seguinte, imagina que você tem um dado que você tem que buscar no seu banco de dados toda hora. Toda vez que você vai abrir uma thread para esse banco de dados e buscar esse dado, você acaba consumindo como eu estava falando antes. Então, você demora mais tempo para ter essa busca. Seu banco de dados também vai ter cada vez mais pessoas chamando ele. Normalmente, um banco de dados vai ter várias chamadas, várias telas sendo abertas e assim por diante. O Redis, na verdade, usar memória em cache pode diminuir esse tanto de acesso ao banco de dados e deixar sua aplicação mais performática e também não judiar tanto do seu banco de dados. Então banco de dados e deixar a sua aplicação mais performática e também não judiar tanto do seu banco de dados. Então, qual que é a ideia? Imagina que você tem que buscar, por exemplo, alguma informação de carrinhos de compras no Marketplace. Enquanto o seu usuário está logado e você está com essas informações em memória, em cache, você pode deixar isso gravado no banco de dados, mas você não precisa ir buscar isso toda hora no banco de dados. Você pode deixar isso em memória e depois fazer persistência no banco de dados e assim por diante. Com isso você não precisa ficar toda hora indo buscar, entendeu? Então imagina que o cliente está ali passeando, navegando durante o site todo. Em alguns momentos você pode ir causando redis para não ter que ficar toda hora batendo no banco de dados a cada vez que ele muda de página ou incrementa alguma coisa e assim por diante. Você consegue fazer algumas estratégias utilizando memória em cache. O Redis é uma ferramenta muito poderosa para fazer isso, beleza? O que o Redis tem de legal que eu acho? A primeira coisa é que ele tem uma estrutura de dados bem legal. Primeiro ele consegue trabalhar com strings. O string ali é o dado mais básico, um txt ou um binário, é um textão ou um binário de no máximo 512 megas. Então ele é bem simples, é um texto simples. Você pode trabalhar nos hashes também. A hash já tem ali uma referência-chave-valor. Então você já consegue representar um objeto quando você está falando de uma hash. Você vê como já começou a ficar mais bacana a história. Você pode trabalhar com listas também, uma sequência de hashes, de strings, perdão. Nas listas você vai ter uma sequência de strings ordenadas ali e que você consegue criar uma fila de mensagem com timeline e assim por diante. Então você consegue ter uma visão de mensageria de strings vindo ali durante a utilização do cache. Outra coisa bacana que tem também é a visão de conjuntos. A visão de conjuntos já é uma visão não ordenada das strings. Então se você não precisar ter uma visão de timeline, uma visão de execução item a item, ou de ordem da coisa, se você puder buscar uma visão sem ordenar, conjuntos é muito rápido. Você consegue buscar as strings de forma muito rápida. Então, você já viu o tanto de possibilidade que a gente tem na mesa que dá para fazer aqui? Aqui fica muito mais rápido. Você pode ter conjuntos ordenados também. Conjuntos ordenados ele trabalha com uma ideia diferente de uma hash, por exemplo. Porque você vai falar, putz, se eu tenho uma string que é um conjunto ordenado, ele é uma hash. Não. Não é isso. Porque você não vai ter uma chave ali direta com ela. Mas direta com ela, mas com os conjuntos ordenados você consegue buscar a ordem da coisa porque ele dá uma pontuação por mensagem então ele tem uma estratégia de pontuação que faz ele ser muito rápido, muito performático mas você consegue ter uma visão de timeline ainda por essa pontuação que ele dá pra mensagem então com isso, você tá vendo o número de ideias que dá pra gente ter, de estratégias que dá pra fazer assim por diante. Só isso pra mim já deixa o Redis ser um cara muito bom. A gente acaba usando muito isso no dia a dia. O Redis também tem uma outra coisa interessante. Ele mantém os dados em memória, como eu falei, mas além disso, ele ainda tem uma opção de persistência em disco. Então com isso você consegue tanto ter os dados em memória quanto fazer algumas persistências em disco. memória quando fazer algumas persistências em disco. Não é o melhor cara para você fazer isso o tempo todo, mas você consegue usar ele para persistências, então ele te dá ainda mais ideias de coisas para fazer. Ele consegue responder muito rápido, como eu já disse para vocês. O Redis de persistência, você tem algumas coisas que você pode fazer também. Por exemplo, um RDB, que é um Redis Database Backup. Então você consegue fazer um backup. Dentro do Redis, você consegue fazer um snapshot igual você faz com bancos de dados ali dentro do RDS, por exemplo. Então você consegue pegar lá, fazer snapshots do que está acontecendo e deixar isso para um backup. Qual que é o ponto que a gente tem que pensar? Os snapshots vão ter ali um ponto de dados. Então eu dei um snapshot agora, as próximas mensagens eu não tenho no backup, assim como qualquer backup. Aí, quando eu der o próximo snapshot, tem a próxima foto da coisa. Então, a ideia do snapshot é legal, é bacana pra você ter backup, mas você não pode usar ela como seu banco de dados de persistência. Você pode usar ela pra pegar alguma coisa caso dê um problemão ali, beleza? Outra coisa que você tem também é o ao s ele tem os jogos de comandos com esse negócio acho muito foda porque o que acontece quando está fazendo ali tudo em memória algumas vezes por exemplo eu já passei por times que não colocaram tão bem a estratégia de rede e você acaba perdendo ali é perdendo a sua mensagem por exemplo imagina que a sua máquina digital dando redes ali ela capota por algum motivo sai do ar você perde aquela mensagem. Por exemplo, imagina que a sua máquina onde está rodando o Redis ali, ela capota por algum motivo, sai do ar e você perde aquela mensageria. Você ter esse logo de comando aqui, o AOF, você consegue persistir tudo o que foi feito ali no banco. Escrita e gravação, tudo o que foi feito. Todos os comandos que foram feitos, você vai saber o que teve de recebimento de pedido do Redis e o que ele executou em ordem. Então você consegue ter um log ali para fazer um tracing se você precisar. Isso eu acho bem legal também para uma estratégia de cache. É bem interessante para quando você tem algum problema em produção, quando tem alguma coisa acontecendo e você precisa resolver rápido, às vezes o log do Redis dá uma salvada também. Então esse cara aqui também é bem bacana de utilizar no dia a dia, tá bom? Outra coisa também que eu acho muito top do Redis é que ele suporta esse tipo de estratégia aqui. Ele suporta que você faça a execução de comandos em sequência, beleza? E você vai garantir esses comandos que eles vão ser executados na sequência que você quer mesmo. Ou seja, você consegue fazer um primeiro comando ali que é de multi, que é como se você estivesse abrindo a sua lista de comandos. Você foi lá e criou o multi e começou a fazer a sua lista. Depois você vai incrementando os comandos que você quer que sejam gerados na ordem. Então o Redis está ali esperando, ele não executou nada. Ele só vai ficar ali segurando. Quando você termina a sua lista de comandos, você pode mandar um exec. Aí ele vai executar. Aí a partir dali você já executou, ok, foi embora só que você viu que você conseguiu montar uma ordem de execução e assim por diante e depois você consegue acompanhar se alguém tiver algum tipo de mudança de estado no que você estava mexendo por exemplo no item que você acabou de dar exec assim por diante você consegue dar o comando que é o watch e você consegue ficar olhando se alguém está mudando o estado daquela daquela chave que foi fornecida para o watch então ele tem uma estratég uma estratégia bem bacana aqui, se você parar para olhar, ele é bem robusto para vários tipos de situações e várias coisas para a gente usar no dia a dia. Bom, galera, vamos falar agora do outro carinha aqui, que é o Mancatted. Qual que é a grande diferença? Que esse é o perdedor. Sacanagem. Esse carinha aqui, ele também tem algumas opções para a gente, mas como eu sou um cara entusiasta do redis eu vou ter que falar também que é bem mais simples bem mais básico e ele pode ajudar a gente algumas coisas mas o redis é bem melhor que ele então sem clubismo vamos lá esse é um sistema também de armazenamento de valor e memória mesmo pegada um cara que vai fazer ali o cache de memória de processamento de dados em memória beleza? então ele vai ter a mesma situação, ele vai tentar diminuir aqui o tempo de resposta de busca de informação em banco de dados e assim por diante, então mesma coisa, tá? qual que é a grande diferença? ele foi projetado para ele ser simples e eficiente, então ele não tem tantas tantas ferramentas quanto o Redis, ele é bem mais simples, bem mais básico mas em compensação ele também é muito bom Então se você precisar fazer alguma coisa Que é mais básica Que você não precisa ter várias funcionalidades Ele pode ser um cara pra você, tá bom? Eu normalmente foco no Redis Até pra gente ter uma solução meio que única No time, a gente não começar a ter 30 tipos Porque aqui eu acho que não vale tanto a pena, mas pode ser que no seu caso você tenha algumas opções aqui de usar o Venket sem problema nenhum, tá? Acho que vale olhar, às vezes até por ser clubista eu acabo levando o time para um lado e aqui vale você ficar atento aí para você também não ser clubista, olha o que faz mais sentido para você, tá bom? Então vamos lá. A primeira coisa que ele tem é a simplicidade. Então a primeira coisa é que ele tem um modelo bem simples. Então ele tem uma ideia de operações bem mais simplificada do que a gente tem no Redis. Ele vai deixar você adicionar, substituir, excluir e recuperar valor nele. Tão simples quanto. Ele não tem toda aquela estratégia que a gente tem do Redis de broker de mensagem e assim por diante. Ele é mais simples. E com isso vai ser mais simples de operar ele também no dia a dia, vamos ser bem honestos. Ele é altamente escalável, o Redis também é, então também não vejo nada assim demais, mas ele é altamente escalável, você pode adicionar mais servidor no pool ali e aumentar a capacidade dele de cache conforme for necessário. Então isso aqui é bem comum e a gente tem isso acontecendo bastante, todo o estilo de cache. Você acaba usando bastante a escalabilidade dele. Deixa eu aproveitar esse capítulo para falar de um ponto que é bem importante para a gente tomar cuidado. Quando a gente está falando de memória em cache, a opção que eu dou para a galera e que eu peço para o meu time ficar muito atento é quando a gente for fazer uma arquitetura que usa cache, o cache ser sempre algo a um... algo a mais. Um potencial de melhora. Ele nunca pode piorar a aplicação. Por que eu estou dizendo isso? Imagina que, por algum motivo, você está tendo um problema no seu cache. Ele está tendo um problema lá. A máquina que está carregando ele está dando pau. Ou você configurou alguma coisa errada. Ele não está funcionando legal. Ele não pode parar a sua aplicação. Porque ele foi feito para melhorar. Então, ele está melhorando o tempo de resposta. Agora, imagina, eu tenho lá um cara que faz toda uma estratégia, tem uma funcionalidade que funciona, mas ela é lenta. Eu coloco o cache para deixar ela mais rápida. Aí, agora, além de lenta, ela não funciona. Então, o que eu coloco para o time é que parece uma degradation de arquitetura tá bom só todo esse spoiler mas depois a gente bate mais um papo sobre esse assunto que eu acho bem importante para a gente pensar tá bom outra coisa também é que ele aproveita ali uma arquitetura de multi thread então ele consegue processar várias coisas ao mesmo tempo e com isso ele vai começar a processar mais volume mas o Redis é a mesma coisa, tá gente? Então no fim das contas ele maximiza o desempenho, muito bacana, assim como os outros também ele tem tudo isso que o Redis também tem, mas ele tem aquelas outras coisas que o... ele não tem algumas coisas que o Redis tem, beleza? é legal a gente deixar isso claro então vamos fazer fazer um comparativo aqui para a gente ver o main cache apanhando. Primeira coisa, ele suporta ali os tipos simples, como eu falei de string ali, dados binários e assim por diante. Bem simples de cache. Então para operações simples de cache vai funcionar. O Redis já consegue fazer dados mais ricos, igual eu falei para vocês. É string, é hash, é lista, é conjunto, conjunto ordenado, tudo aquilo que eu expliquei para vocês são estruturas muito mais complexas para você conseguir fazer a utilização do Redis no dia a dia. Então, se você colocar uma enquete e amanhã, por exemplo, a sua aplicação começar a aumentar, de ideia, de estratégia, você talvez tenha que mudar para o Redis, dependendo do que você tem aí, beleza? Outra coisa também, ele não oferece opções de persistência. Então, subiu máquina, está rodando, deu algum pau, derrubou, sei lá, o cheque não bateu, ela derrubou a máquina e subiu outra. Os dados são voláteis, ele vai ser perdido e você vai ter que ter um jeito de ter esse dado para processar depois. O Redis tem várias ideias de persistência, então você consegue colocar os dados salvos para você conseguir ir executando e colocando isso de uma outra maneira que você não perca tudo. Você consegue ter estratégias dentro do próprio Redis para fazer isso. O que a gente consegue fazer? Consegue, mas você vai ter que montar essa estratégia de resiliência por fora, beleza? Outra coisa também é que ele não tem suporte nativo ali para replicação em várias zonas e daí talvez ele não tenha a melhor disponibilidade só que se você juntar ele lá com o Elastic Cache ele vai acabar te dando isso daqui então esquece esse pedaço porque se ele tiver puro talvez não mas a gente quando começa a usar o Elastic Cache ele vai te dar isso. O Redis ele tem várias funcionalidades de replicação ele pode ter disponibilidade em vários lugares assim por di diante. Mas uma coisa que eu já te falo é esse comparativo é puramente quando a gente está falando de main cache e redis. Quando a gente coloca eles para dentro do Elastic Cache que o cara vai processar eles e executar eles no dia a dia isso cai por terra, tá bom? Outra coisa também vamos chegar aqui na conclusão da nossa conversa se a gente tiver que comparar os dois, o main cache é uma coisa mais simples quando você precisa fazer cache puro para aliviar a carga de trabalho, execução, aqueles casos que eu dei pra vocês mais simples de trabalho, onde a gente precisa buscar dados e tentar cachear essa informação pra gente não ficar indo bater em banco toda hora, ele é bem interessante, porque ele é bem simples e assim por diante. O Redis, quando você precisa de coisas mais complicadas, é o cara. Então, toda vez que você pensar em, putz, eu preciso ter alguma estratégia de PubSub, eu preciso ter algum tipo de outra funcionalidade agregada, talvez não. O Redis é o cara. E se você precisar ter um sistema que você sabe que ele vai estar evoluindo ao longo do tempo, etc., minha dica, vai de