Scribe
Scribe

Нравится? Сделайте Scribe еще лучше оставив отзыв

Получить расширение Chrome

Обзор

  • Популярные Видео
  • Недавние Видео
  • Все Каналы

Бесплатные Инструменты

  • Загрузчик Субтитров Видео
  • Генератор Временных Меток Видео
  • Генератор Резюме Видео
  • Счётчик Слов Видео
  • Анализатор Заголовков Видео
  • Поиск по Транскрипциям Видео
  • Аналитика Видео
  • Создатель Глав Видео
  • Генератор Викторин Видео
  • Чат с Видео

Продукт

  • Цены
  • Блог
  • Получить расширение Chrome

Developers

  • Transcript API
  • API Documentation

Правовая информация

  • Условия
  • Конфиденциальность
  • Поддержка
  • Карта сайта

Авторское право © 2026. Сделано с ♥ Scribe

— Если мы сделали вашу жизнь проще (или хотя бы немного менее хаотичной), оставьте нам отзыв! Обещаем, это сделает наш день. 😊

Related Videos

Aula 013 InMemory Cache

Video thumbnail
03,711 Слов18m readGrade 18
Поделиться
Channel
Next Wave Education
se vamos falar em Performance em dnet precisamos falar é claro de estratégias De Cash existem diversas estratégias de cche principalmente criadas dentro do próprio produto dentro do próprio Framework né do dnet e a gente vai ver algumas delas aqui inclusive com implementação de código umas delas é o in Memory Cash o Cash de forma geral ele pode melhorar ali de forma significativa a performance do seu sistema o desempenho a escalabilidade reduzindo o tempo de latência reduzindo o tempo de resposta e principalmente o trabalho ali de buscar um conteúdo num banco de dados ou em qualquer
outra fonte de dados então o primeiro critério que temos que ter em mente quando a gente for trabalhar com cche é entender que os caches que devem ser cacheados isso não é a regra Mas é uma boa ideia uma boa prática é que esses dados eles não tenham tanta frequência de alteração e são assim normalmente dados que você faz um cadastro e que eventualmente vai mudar um bom exemplo disso e é um exemplo que eu vou trazer aqui com código seria por exemplo um cadastro de produto de um e-commerce por exemplo então produtos serão cadastrados
e às vezes vai mudar um valor vai mudar alguma outra informação mas de forma geral a característica geral do produto né seu nome sua descrição peso etc isso quase nunca muda então antes da gente pensar em cash a gente tem que pensar realmente na fonte de dados que a gente tá trabalhando e se de fato é um dado plausível para e ser cachado esse in Memory cach basicamente é uma estratégia onde a gente faz o Cash dentro do Servidor da aplicação Então esse cche ali se você tem um Farm né que são vários web servers
dentro do mesmo servidor você pode se beneficiar disso também e isso é salvo lá só lembrando que o Cash não é infinito então a gente precisa também ter essa consideração que apesar do espaço de memória né porque o Cash vai ser salvo na memória apesar da gente tá trabalhando com memória a gente tem que considerar que a memória não é infinita ela é uma memória finita E aí você tem que se preocupar também com o tamanho desses cashes na prática então assim um contexto geral do que a gente vai fazer imagina o cenário onde um
browser ou uma requisição numa epi vai fazer uma requisição E aí a nossa epi aqui que é o o código que a gente vai criar ela vai receber aquela requisição para um get de produtos por exemplo nesse momento a gente tem que entender se esse Cash já está lá né se tá vivo aquele Cash se tá quente vamos falar dessa forma ou se a gente precisa ir no banco de dados pegar os dados setar o cche e retornar essa informação e nesse mesmo momento que a gente faz isso setando ali a gente também pode colocar
diversas características no cash Como por exemplo o tempo de inspiração o tamanho do Cash Então são boas práticas também pra gente fazer um outro ponto que durante o código aqui eu vou mostrar é que a gente precisa eh Ter uma estratégia de fallback Ou seja a gente não pode sempre considerar que o Cash estará lá então na implementação desse código a gente vai ter que garantir que a gente Tente pegar o cche se ele não existir vai numa fonte de dados no nosso caso um banco de dados seta o cche e volta a informação para
lá e aí o request subsequente provavelmente vai pegar o Cash já quente né o cche já salvo Então bora criar isso né vamos transformar isso em código agora a gente tá pegando aqui o mesmo código que a gente veio durante o curso e vamos só fazer algumas alterações até para não ficar um código muito enroscado vamos criar uma pastinha aqui que é uma pastinha de projeto vou chamar de dnet tá e vou jogar esses testes que a gente fez de performance aqui aqui dentro e aí vou criar uma nova pastinha e nessa pastinha aqui eu
vou chamar ela de api Então o que a gente vai fazer praticamente é criar um novo projeto mesmo New Project aqui esse vai ser um projeto de novo dnet 8 Então se você for reproduzir comigo lembre-se de instalar o SDK o runtime lá no no site da Microsoft dn8 com visual Studio 2022 escolhe o projeto aqui aspet Core web API escolher ele aqui vou escolher aqui onde é que eu vou publicar isso vai ser aqui dentro dessa pastinha api que eu já tinha previamente aqui dentro do projeto tá então e o meu projeto vai ter
um nome bem distinto vai chamar api também vamos dar um next aqui aqui pode deixar o padrão veja que a gente tá com dnet 8 que enquanto a gente grava esse vídeo aqui é o que tem de melhor ah deixa as configurações de https deixa tudo no padrão tá vamos usar os controllers também no pão aqui e aí é só criar esse projeto por ser um projeto template né ele vai trazer aqui algumas coisas que talvez a gente não precise Então esse weather forecast vamos excluir tá que é uma classe aqui que ele traz como
exemplo e esse Controller já vamos trocar o nome dele aqui para products products Controller que vai ser o Controller que vai receber as requisições para pegar os produtos tá aqui é tudo sujeira né que ficou vamos tirar essa sujeira Ah aqui também era weather for Cash já vamos dar o nome aqui para esse end Point aqui e para esse método Na verdade ele vai se chamar in Memory cach aí aqui vamos já criar inclusive o catálogo de produto né a classe de produto clicar com o botão direito add New Class lembrando é só um disclaimer
aqui que a gente não tá se preocupando muito com um padrão de projetos arquitetura aqui tá a gente vai fazer essa implementação aqui mesmo mas um projeto real aí tente usar o máximo possível de boas práticas então aqui Public int vou ter um ID aqui eu vou fazer também um date time Vou salvar o Create date que eu vou chamar de Create date vou ter também um category Public string category uma categoria de produto e um Public string description então é basicamente essas quatro propriedades que a gente vai precisar e a gente vai depois criar
isso até no banco de dados também mais paraa frente para fazer outros testes é isso que a gente precisa então aqui eu preciso desse products eu vou passar esse products aqui nesse get tá nesse nesse get legal vou tirar isso aqui tudo vamos trabalhar de forma assíncrona aqui então basicamente o que eu vou precisar fazer é transformar esse método aqui e passar aqui um ay Task então é uma tarefa aqui né Eh é o método né esse get aqui vai me retornar de forma assíncrona e aqui eu vou fazer um return e preciso de uma
classe de serviço aqui então por enquanto vamos parar aqui tá então agora vamos criar uma classe de serviço pra gente buscar essas informações tá essa classe de serviço a gente pode criar aqui dentro a D vamos criar uma pastinha só para ficar um pouquinho mais organizado add vamos chamar essa essa pasta de service serviços e vamos criar primeiro um uma interface essa interface a característica dela né se você já programa em dnet aí há bastante tempo ela basicamente vai ser o nosso contrato do que que a gente precisa fazer nessa classe de serviço e a
gente vai implementar ela de acordo então I product service esse I product vai ser público e aqui eu vou passar eu vou descrever né que a gente vai ter um tesk list vai retornar produtos e o nome dessa classe vai ser get products tirar esse aqui na prática é uma boa prática deixar essa nomenclatura a porque é um método a Mas enfim deixar aqui como get products e aqui dentro dessa classe de serviço eu já vou colocar uma outra classe que é a implementação né a classe que a gente vai de fil implementar Então vai
ser product service e aqui a gente vai pegar vai fazer o uso da i product service control ponto aqui implementar a interface vai trazer para mim aqui o método que tá lá disponível e maravilha ele não traz aqui o ayc vamos já colocar o assn já pra gente não esquecer e vamos implementar aqui então a primeira coisa antes de implementar esse método aqui vamos fazer algumas coisas nessa classe de serviço primeira coisa a gente vai precisar aqui de uma propriedade Private read only I product service né opa não isso aqui é isso i product service
é a classe que a gente vai utilizar na realidade desculpa a gente tá falando de Cash né aqui é Private read only I Memory Cash Memory Cash Se eu der um control ponto aqui ó ele vai me levar PR pro namespace aqui do Microsoft extension cach Memory então só lembrando que essa é a implementação da própria Microsoft para cche então é o próprio Framework já te dá essa facilidade E aí eu vou dar o nome aqui de memory cach ã aqui eu preciso definir também um nome desse Cash Então esse Cash vai chamar né uma
uma chave a gente diria o Cash Key Então esse Cash quey vai se chamar produtos products tá Por que que eu preciso disso porque a referência em memória vai ter esse nome aqui e aí eu vou ter uma lista de produtos associada a esse Cash Key tá aqui eu faço control ponto ó ele vai gerar o Construtor para mim já fazendo a injeção de dependência Então vou jogar aqui dentro de memory cche e maravilha agora dentro do método aqui que products a gente vai ter que fazer a implementação disso então vamos criar uma lista de
products uma lista genérica aqui products e e vamos deixar ela sem nada por enquanto não vou instanciar ela aqui que tá agora a o que a gente conversou lá no no começo do vídeo sobre uma estratégia de fallback a gente precisa fazer uma estratégia de fallback aqui para determinar e a existência desse Cash né se eu consigo pegar esse cche Então dentro desse if aqui que que eu vou fazer eu vou falar assim se não tiver nada aqui no memory cche ele vai fazer um um try get value tá existe esse método aqui que ele
vai associar o o nome que foi passado do cche que é esse cche Key aqui em cima e vai ver se tem alguma coisa ali se tiver ele vai retornar isso ele vai dar um Alt para o products que é essa lista que eu acabei de criar ali em cima né então ele vai tentar fazer isso só que aqui a gente tá fazendo uma negativa então a gente tá verificando se não existe esse se não existe valores né ou se não existe nada setado dentro desse Cash que aqui então se tiver ele vai jogar para
product se não tiver que é o que a gente tá tratando aqui a gente precisa buscar isso dentro de uma base de dados ou algum lugar que você precise dessa informação seja uma outra api e tudo mais aqui vamos fazer uma implementação então de products igual eu vou criar um método aqui vou chamar get values from theb A então eu vou basicamente simular uma ida no banco de dados eu não vou fazer nenhuma chamada aqui de banco de dados nem nada Vamos simular por enquanto depois nós vamos refatorando isso aqui e a gente melhora um
pouquinho mais paraa frente tá se fizer sentido Então esse cara aqui que que eu vou precisar fazer ó dentro dessa lista aqui que é privada desse método que é privado aqui eu vou também precisar aqui que ele seja Private Task aqui precisa ser um t também né TK list de products get valb aqui eu vou criar uma lista então list prods e aqui eu simular como se esse mesmo de de bancos de dados né então vamos fazer um New aqui e vamos criar uma estrutur básica aqui ó New products e vamos passar aqui um ID
igual igual um por exemplo Create date date time now vamos passar aqui também um category igual categoria 1 e vamos passar um description igual descrição um aqui nesse caso né no projeto real aí você vai trabalhar o ideal seria você fazer aqui a injeção eh de uma classe que vai buscar no banco de dados ou algum outro lugar tá então aqui só para simplificar nosso nosso entendimento vamos fazer dessa forma então ID 1 2 3 categoria também 1 2 e 3 e descrição 1 2 e 3 Ah beleza aqui eu vou fechar esse cara aqui
deixa eu ver tá faltando faltando alguma coisa aqui legal então isso aqui vai ser basicamente o que a gente vai simular de dados basicamente isso agora formate certinho bonitinho aqui tá aí agora vou fazer o seguinte vou criar uma tes também que vai me retornar aqui list de products e essa Task ela vai products Task igar uma aqui New então eu vou basicamente dentro dessa implementação aqui que eu vou fazer eu vou dar um thread p slip só pra gente simular quando a gente forar lá no swager quero que isso aqui espere TR segundos tá
então ele vai esperar ali 3 segundos E aí vai dar sensação que realmente tá indo buscar lá no banco de dados né isso aqui deixa eu ver acho que isso aqui ponto e vírgula aqui e aqui embaixo return produ TK beleza refaturar ISO aqui deixa eu ver boa aí aqui embaixo mesma coisa né return produ TK Beleza então o método tá implementado né meramente traz três produtos dá um slipin aqui aqui tava deixa eu colocar 3 segundos né Para dar impressão quando a gente for chamar lá na interface e aqui eu faço pon aqui eu
tenho que pegar o resultado daquela tesque então o método acima já vai chamar aquele método ali de forma assíncrona também e a gente vai ter esses resultados dentro dessa lista de produto agora a gente tem que setar o cche então aqui a gente vai pegar Memory cche ali de cima ponto set aí ele tem aqui passando Cash Key né colocar mais para baixo aqui fica um pouco bonitinho e os produtos mas aqui como eu tinha falado de boa a gente precisa atentar os pontos que de novo a memória não é finita a memória ela né
ela ela momento acaba ali no servidor e é uma boa prática você colocar algumas outras opções tá E aqui eu consigo depois do do do products aqui ó eu consigo fazer a implementação aqui dessas características que eu acabei de falar então a gente consegue fazer um New Memory Cash entry options Então esse entry options eu consigo passar alguns parâmetros como por exemplo set Absolute expiration ou seja o o Cash vai ter um tempo para expirar vou passar aqui o time span from Seconds e eu vou falar que ele vai expirar em 15 segundos então cada
15 segundos enquanto eu chamar esse api esse cara vai est Vivo e se não tiver ele vai fazer o fallback e vai pegar do banco de dados aqui tem várias outras coisas tá set priority expiration né e o Size aqui é o que eu quero fazer então eu também posso colocar um tamanho para esse Cash limitar ele para não ficar um Cash gigante colocar 124 aqui como exemplo tá então foi no banco de dados pegou informação jogou no cash isso sempre nessa negativa né se o Cash não tiver disponível E aí ele já aca o
Cash de volta e aqui a gente vai fazer um return products aqui depois dessa implementação return products return os products aqui de cima Bom eu acho que tá bem claro né é um método bem simples que meramente vai fazer a busca do Cash se encontrar o Cash vai pegar se não pegar vai buscar no banco setar o Cash retornar os produtos e essa é a estratégia e aí como sempre não sei vocês mas eu quase sempre esqueço né é bom já vir aqui no program CS e já fazer a configuração da injeção de dependência sempre
que eu vou fazer eu esqueço isso aquii então build Services ponto vamos colocar esse cara como scoped add scoped vou passar lá a interface I product service e quem vai implementar ela product servers e também necessário fazer o build P services.add Memory cche porque ali a gente fez a implementação tá usando a nossa interface mas eu não falei pro Framework ainda que eu precisava usar o memory Cash aqui eu tô fazendo isso aí tá bom ah vamos dar um build aqui por enquanto pra gente ver se não tem nada aqui que vai estourar por enquanto
e se não tiver a gente vai pro Controller que a gente deixou o Controller vazio ó lá Controller tá esperando ainda a chamada do serviço então aqui eu vou ter que além do ilogger aqui que a gente tá usando vou passar um Private read only Agora sim vou chamar o serviço aqui ai product service vou chamar ele de product service também aqui eu posso apagar isso pegar essas duas linhas cont control ponto no meu teclado mandar ele gerar o Construtor já gera aqui bonitão para mim beleza já implementei os dois agora é só e pegar
aqui e fazer um return await product service get products Então vai bater aqui no get né http get e aqui em cima também a rota eu gosto de fazer api barra então ficou dessa forma assim ó ficou bem chuta né isso aqui galera projeto mesmo produtivo usando essa estrutur assim de fazer essas ões de dependências é sempre é sempre bom né É sempre bom a gente deixar o código o menos desacoplado possível PR gente gerar dependência de DL dependência de camada e tudo mais eu acho que é isso então vamos pro teste né Vamos fazer
um teste aqui mudar o projeto colocar aqui e set Startup Project na api vai rodar htps beleza vamos dar um start aqui tá iniciando aqui ele vai subir o Swagger Muito provavelmente E aí no swager a gente vai começar a testar a primeira implementação aqui que eu vou fazer é essa chamada do swager aqui Então beleza vamos testar mas da primeira vez aqui como eu ia falar eu vou fazer o seguinte vou colocar um Break Point só pra gente passar aqui tá vou colocar direto dentro do get prod mesmo tá só pra gente ver realmente
acontecendo aqui o que a gente acabou de implementar para ficar o mais claro possível p o Break Point aqui vamos chamar eh abriu o visual Studio Aqui já parou lá então ele vai olhar pro Cash aqui como é a primeira vez que a gente chamou provavelmente essa negativa aqui vai dar true né vai dar true porque vai entrar no método legal entrou vai pegar os valores ali de baixo ó vai demorar um pouquinho eu coloquei um trad slip vai colocar essa informação no cash E vai retornar o produto pra gente tem inspiração ó lá trouxe
os produtos Maravilha isso aqui tem inspiração de 15 segundos então se eu for rapidinho aqui e tirar o Break Point é eu acho que já não vai mais dar tempo mas deixa eu pegar aqui já Vai expirar Com certeza a gente faz de novo aqui se eu for no serviço aqui product Services Cadê serviço product servic se eu tirar ó já passou 15 segundos Com certeza se eu tirar e fizer de novo ó ele vai demorar 1 2 3 pegou do banco jogou no cash mas agora ó ó instantâneo Então essa informação ó tá no
cash e o tempo de vida dela ali tá sendo de 15 segundos enquanto eu tiver respondendo aqui vai chamar só do Cash ó lá agora pegou de novo do banco de dados porque o Cash respirou está no banco de está no servidor né então esse Cash aqui tá no servidor Eh é bom mais uma vez deixar um limite setado e sempre considerar que o Cash não é infinito né então eh ah mas quanto que eu coloco é uma pergunta difícil e uma resposta difícil porque vai depender do seu contexto né De quantas informações você tem
eh do que é necessário realmente botar em cash e tudo mais então vamos lá né boas práticas agora então diretrizes de uso vamos falar o código sempre tem que ter aquela opção de fallback para buscar os dados que é aquela implementação que a gente mostrou do try get value isso é padrão precisa ter né você não pode contar que o Cash vai estar sempre lá o Cash usa os recursos são escassos então a memória cara a memória escassa né apesar de hoje a gente ter Cloud computing que basicamente tem ali computação quase que infinita pra
gente utilizar mas tem que considerar a custos também e o limite é o crescimento desse Cash Tá então vamos sempre olhando para isso daí usar a inspiração de Cash também dependendo do contexto que você precisa aí e dá para você determinar quanto tempo que esse Cash vai ficar vivo ali né aqui a gente colocou 15 segundos mas tem cenários que dá para deixar o Cash vive por uma hora vai depender muito do contexto de cada projeto de casa de cada caso de uso tá bom Mas no geral é isso tá use use bem é isso
é muito bom pra performance e vamos vendo mais estratégias aí
Похожие видео
Turning Off the UK Electricity is being rationed. If you were given a ration book, you’d understand
16:01
Turning Off the UK Electricity is being ra...
Katie Hopkins OFFICIAL
288,414 views
Susan Boyle - I Dreamed A Dream - Britain's Got Talent - April 2009
7:33
Susan Boyle - I Dreamed A Dream - Britain'...
TheSBFII
23,508,456 views
Here's Jim Davidson at Jethro's funeral, delivering a heartfelt tribute to his dear friend
9:01
Here's Jim Davidson at Jethro's funeral, d...
Andy Reed
969,230 views
Secrets of Shad Thames, London SE1
17:00
Secrets of Shad Thames, London SE1
Robslondon
38,203 views
Are we happy with the progress of our new boat build? Ep 33
15:23
Are we happy with the progress of our new ...
Narrowboat Wey Aye Man
611 views
Olive and Mabel - memories are made of this.
6:23
Olive and Mabel - memories are made of this.
mrandrewcotter
130,984 views
Peter Cook & Dudley Moore - Jesus' Life
19:46
Peter Cook & Dudley Moore - Jesus' Life
Byronic Tonic
767,734 views
Nigel Farage is Challenged Over His 'Irresponsible' Comments on the Southport Attack
13:52
Nigel Farage is Challenged Over His 'Irres...
Good Morning Britain
154,668 views
The Royal New Zealand Navy's HMNZS Manawanui, Grounded, Then Sank Off the Coast of Samoa
23:46
The Royal New Zealand Navy's HMNZS Manawan...
What is Going on With Shipping?
317,559 views
IN AWE: THOMAS HARDY’S STINSFORD
31:13
IN AWE: THOMAS HARDY’S STINSFORD
Ben Maton - The Salisbury Organist
11,084 views
Don't Risk Losing Your PIP Claim: The Evidence You Must Provide
34:08
Don't Risk Losing Your PIP Claim: The Evid...
Charlie Anderson
13,630 views
Peter Kay 'Biggest Laugh in the History of the O2' | Finale Highlights (2011)
8:14
Peter Kay 'Biggest Laugh in the History of...
Comedy Centre
3,909,112 views
IN FULL: Reform UK law and order press conference
23:26
IN FULL: Reform UK law and order press con...
The Mirror
32,482 views
15 Year Old Emma Kok Sings Voilà – André Rieu, Maastricht 2023 (official video)
7:26
15 Year Old Emma Kok Sings Voilà – André R...
André Rieu
70,688,427 views
Americans React: 10 Celebs We Never Knew Were Actually British 🇬🇧
22:46
Americans React: 10 Celebs We Never Knew W...
Reacting To My Roots
156,784 views
Nigel Farage HITS BACK at 'delusional' Tories over retirement claims: 'Not a cat's chance in HELL!'
12:10
Nigel Farage HITS BACK at 'delusional' Tor...
GBNews
143,630 views
Transforming The Worst Room In My Rural Scottish Cottage - Temporary Makeover on a Budget
22:11
Transforming The Worst Room In My Rural Sc...
Rewilding Jude
36,709 views
JOHN CLEESE - INTERVIEW ABSOLUTELY UNMISSABLE THE FUNNIEST EVER 🤣 #funny #fun #laughter #comedy #lol
50:50
JOHN CLEESE - INTERVIEW ABSOLUTELY UNMISSA...
SCOTTIE McCLUE TALK SHOW
252,413 views
AMAA - Spain - Inside the Royal Palace of Madrid - España - Reaction by Average Middle Aged American
40:48
AMAA - Spain - Inside the Royal Palace of ...
Average_Middle_Aged_American
6,912 views
Jazz Saxophone - Sweet Relaxing melodies
45:18
Jazz Saxophone - Sweet Relaxing melodies
Relaxing Songs
299 views