bom pessoal no vídeo anterior a gente entendeu a ideia básica do cash mas eu falei aí pra vocês que o segredo do cash não tá nesse formato de você utilizar tá entender como que a gente pode trabalhar com invalidação como é que funciona isso aqui nós temos diversas estratégias de invalidação e são essas estratégias que eu queria mostrar, pelo menos aqui, para que você tenha uma linha de raciocínio na hora de pensar qual é a melhor forma de eu invalidar o cache. Como eu já disse para vocês, os dados do cache podem mudar e eles podem ficar ultrapassados. Por quê? Porque a aplicação gerou alguma transação que refletiu naquele dado e se a gente for consultar o dado diretamente, a gente vai estar com o dado mais antigo. Então a nossa ideia é como que eu consigo manter o máximo possível na consistência dos meus dados. E é para isso que a gente tem as estratégias de invalidação. Então vamos lá, como é que funcionam essas estratégias de invalidação? Eu tenho uma estratégia que é chamada de Time Based Invalidation, a gente já vai falar sobre ela, eu vou explicar cada uma delas. Nós temos outra chamada de Least Recently Used ou LRU, nós temos a MRU que é Must Recently Used, nós temos uma outra ainda chamada Least Frequently, que é LFU ou LFU. E nós temos também uma outra aqui chamada de TTL Based Validation. TTL significa Time to Live, ou seja, o tempo de vida. E existem mais duas outras estratégias aqui que são importantes, mas não são tão comuns de você ver a galera falar. A primeira é Write-Through Invalidation e a outra é Write-Back Invalidation. Então, como vocês podem ver, galera, pode parecer muito simples a utilização do cache. Mas, sem você utilizar as estratégias corretas você não vai conseguir tirar o melhor disso ou também se você não entender estratégia correta você vai poder estar retornando dados inconsistentes a pro seu usuário e você não quer isso então vamos dar uma olhada é entender né de uma forma geral como que funciona cada uma dessas uma dessas estratégias aqui de invalidação. Legal? Então vamos lá. Time-based invalidation. Deixa eu só voltar aqui porque eu não queria um slide específico para essa, porque ela é a mais simples. Time-based invalidation é o seguinte, você fala, olha, daqui 10 horas eu quero que esse cash ele desapareça ou seja o queixo vai ser limpo em um tempo específico tá simples assim ou seja gravei algo eu falo esse queixo vai durar por cinco horas depois disso pode remover do cash pra gente gravar uma com a um dado mais recente ali legal normalmente isso é muito muito utilizado em sites que têm muito acesso ao momento um site de acesso à informação tipo algum site de notícia ou eventualmente a quando você normalmente tem uma noção de quando os dados eles devem ser atualizados por algum evento que acontece no sistema você sabe que sei lá todo dia na parte da noite a você atualizou um relatório então você consegue trabalhar mais ou menos nessa pegada legal agora vamos falar sobre lr o tá list recently used o pra que serve esse camarada aqui eu acho que a melhor forma tá a a pra gente entender tá é com algum exemplo um pouquinho mais simples aqui pra vocês verem tá listre cento e o significa a o o que foi utilizado de forma menos recente tá ou seja vamos imaginar o seguinte todo cache ele tem um limite de memória imagina que você tem uma máquina você tem um giga para queixem mas quando esse cache encher eu tenho que dar um jeito de jogar alguma coisa fora para eu entrar com um dado mais novo legal e é por conta disso que a gente tem que ter essas estratégias para saber como que a gente vai jogar esses dados fora legal então essa lista recentes lhe use é uma forma de você conseguir jogar fora os dados menos recentes legal como é que funciona aqui pra você vai imaginar que eu tenho um registro que o cachê a depois eu achei b depois o cachê e se mas o que acontece agora aqui galera eu tenho tá apenas três posições para guardar no meu cash eu não consigo guardar quatro registros, porque eu vou ficar sem memória. Então, eu vou ter que escolher uma estratégia para eu remover o A, o B ou o C, para eu conseguir colocar o meu D. Legal? Então, como que eu posso fazer? Usando o LRU, o que eu vou fazer? Eu vou colocar o D, mas para eu colocar o D, alguém vai ter que ir embora. E nesse caso, quem vai embora é o A, porque ele foi o cara menos recente. Legal? Ou seja, eu estou dando preferência aqui para mim aos caras mais novos, tá? E o cara menos recente a gente vai jogar fora. Legal? novos tá e o cara menos recente a gente vai jogar fora legal então essa aqui é uma ideia assim super simples pra você entender quando você utiliza é essa estratégia legal vamos aqui pra outra estratégia que é mr um mas recentemente us o que é que essa estratégia faz ela joga fora a versão mais recente e daí você deve estar pensando poxa porque eu vou jogar fora a versão mais recente e daí você deve estar pensando poxa porque eu vou jogar fora a versão mais recente por incrível que pareça isso é mais comum do que você imagina vamos imaginar que eu tenho uma cdn uma content delivery network imagina que todos os vídeos que você está assistindo agora ele está passando por uma cdn então esse vídeo que você está assistindo agora ele está passando por uma cdn então esse vídeo que você está assistindo agora é cacheado numa cdn para que todo mundo que acesse esse vídeo mais perto você concorda que esse vídeo é a versão mais atual tá porque ele foi cacheado beleza agora já que ela é a versão mais atual agora o que eu quero fazer Eu quero mudar essa versão porque eu alterei esse vídeo. Eu fui subir e adicionei alguma coisa no vídeo. Então, ele vai pegar essa versão mais atual, jogar fora para colocar a nova aí na frente. Então, a MRU serve para isso. Eu tinha a versão C, joguei fora essa versão para entrar aí no final das contas, né? A versão C novamente, porém, uma versão modificada aqui para a gente. Legal? Então, MRU é muito comum. Normalmente, você só tem uma versão daquele mesmo cara. Legal? E agora, a gente tem a LFU, tá? Que é List Frequently Used. O que essa versão faz aqui? Ela joga fora, quando o cache está cheio, o registro que tem menos acessos. Não interessa se ele foi guardado antes ou depois. Ele é jogado que tem menos acesso então vou imaginar que eu tenho um registro não é um alvo é um os dados a foi acessado sete vezes aí eu tenho b6 eu tenho c5 e eu tenho de 10 qual vai ser jogado fora na hora que o queixo encher o c porque ele é o cara que teve menos frequência de acesso. E aí, nesse caso, esse cara vai embora. Beleza? E agora, a gente vai, tá, para esse cara aqui, né? Write-through invalidation. Pra que que serve esse cara? O lance é o seguinte, existem sistemas que você não tem tanta gravação, mas ele pode ter muita leitura. E para você conseguir produzir um cache e já dar a leitura com os dados mais recentes rapidão para você, o que você pode fazer? Seguinte, sempre quando há alteração no disco, por exemplo, se alterou os dados no seu banco de dados o cache ele atualizado em conjunto então além de guardar os dados diretamente no banco sei lá eu salvei um registro a de uma nova uma alteração de um texto de uma notícia na hora que eu salvei essa alteração automaticamente eu já salvei essa informação no cache também. Legal? Então isso chama o write-through invalidation. Por quê? Porque a gente evita demais ao extremo com que a pessoa acesse o disco. Por quê? Porque na hora que eu altero no disco, eu já altero no cache. Daí você já vai buscar sempre no cache. Legal? Então isso chama o write-through invalidation. Legal? Então é o seguinte a estratégia funciona bem com sistemas que não possuem um alto índice de escrita, tá? Porque se tiver muita escrita, aí vai forçar muito a barra, você tem que persistir em dois lugares todas as vezes, legal? E agora a gente tem o outro que é chamado de write-back invalidation esse cara aqui, honestamente, eu nunca vi gente utilizar, mas é uma estratégia. O Write Back Invalidation é o seguinte, imagina que você está tendo muita escrita nos seus dados ou o seu cache está atualizando recentemente né então ao invés de na hora que você for fazer uma atualização você guardar no seu banco de dados você guarda primeiro no seu cash cedar prioridade no seu cash em relação ao seu banco de dados e quando esse cash por algum motivo, estiver para expirar, você salva nesse banco de dados. Ou, quando o cache for gravado, um tempo depois, você manda esse cara gravar no banco de dados. Legal? Então, quando há alteração, o cache primeiramente é atualizado e depois o dado em disco é atualizado. atualizado e depois o dado em disco é atualizado muitas vezes o dado em disco atualizado quando o cache já está para expirar de alguma forma legal então galera como você pode perceber tá há muito aqui do que a gente quer trazer nesse programa pra você é fundamento eu sei que tem gente que adora sujar a mão de código e a gente vai fazer isso durante todo o nosso curso porém fundamento é muito importante e eu acredito que no momento da carreira que você tá entender esses fundamentos é muito mais interessante do que você saber dá um sete no reds e o da um guete no reds entende a diferença dos das pessoas que estão liderando grandes projetos estão arquitetando grandes projetos é que ela tem esses fundamentos e esses fundamentos vão fazer a diferença na hora que a coisa crítica acontecer beleza então é isso aí e vamos nessa aí pro nosso próximo pater