229. Fem cache-strategier
[00:00:00] Sofia: Du är boomer så du vill såklart ladda upp en ny fräsch profilbild på Facebook. Det är mycket filter eller så är det från din katalog när du gick på gymnasiet. Eller så är det en screenshot
[00:00:16] Madde: av ditt fotalbum och så ser du längst ner alla andra bilder som ligger bredvid.
[00:00:43] Sofia: Jag har ju sagt till dig att jag ska köpa en ny telefon, särskilt innan barnet kommer, för man tar ju antagligen tusen barnbilder när man får barn.
[00:00:53] Madde: Ja,
[00:00:53] Sofia: man vill ha en bra kamera då. Exakt för jag har en sketen mobil från jobbet nu, men det känns som en iPhone 6. Nej, men så har jag tänkt att jag ska köpa en begagnad mobil, för att liksom...
Det räcker med en iPhone 15, typ. Pro, kanske. Det spelar inte så stor roll, men så kommer det en telefon som man är såhär den kommer ut i september alltså den här hade jag ändå velat ha. Ja. Alltså en ny iPhone?
[00:01:25] Madde: Eller någon annan?
[00:01:26] Sofia: Nej, det är faktiskt en annan telefon. Som jag inte ser
[00:01:31] Madde: på att lämna Apple-ekosystemet.
[00:01:34] Sofia: Ja, det är en Android. Jag ska visa dig hur den ser ut. Får du beskriva för lyssnarna vad du ser? Okej detta låter suspekt. Det är ju den här telefonen då.
[00:01:52] Madde: Okej det ser ut som typ en guldtacka. Lite... Trumpmobile make America great again och så är det liksom borstats guld och ett stort T på baksidan och en amerikansk flagga ingraverad ja jag förstår att du blir sugen alltså ja
[00:02:13] Sofia: den säljs för 500 dollar Så det är rätt bra pris. Ja, vilket
[00:02:20] Madde: kap. Den har ju tre kameror och sådär.
Den har tre kameror.
[00:02:25] Sofia: Ska jag se, ja. För den här släpps ju typ i höst Tillsammans med Trumps nya såhär... Vad heter det? Kampanj? Nej, men vad heter det? Operatör. Jaha. Som typ hallon, men... Trump ska ha ett eget mobilnät också. Just det, ja. Herregud. Det kan väl vara någonting.
[00:02:54] Madde: Men vadå, alltså vad... Är det något speciellt med den här telefonen då?
Förutom att den är guldig att det är ett stort T. Sen så råkar de ju ha en skrivbordsbakgrund. Eller skrivbordsbakgrund säger man kanske inte på en telefon, men wallpaper. Med liksom Trump och sånt. Det kan man ju byta ur mobilen. Är det någon annan speciell feature eller något? Nej, det verkar vara...
Avlyssning som är inbyggd?
[00:03:19] Sofia: Ja, det är lite spekulationer om vilka appar som ska vara förinstallerade på den. Att antagligen så kommer alla vara så att de trackar dig. Och det är ju... Folk har ju försökt komma på, vad är det här för mobil? För det finns ju en massa mobiler som kostar typ 2 000 spänn. Som alla liknar iPhones som du kan beställa på Alibaba.
Och det är något så här... Ganska sketna Android-lurar. Så det här kommer ju vara någonting de importerar från Kina och liksom lackar om.
[00:03:50] Madde: Men hur liksom lirar det med importtullar hit och dit och att man inte ska samarbeta med kinesiska staten och Nej,
[00:03:59] Sofia: det är ju någonting. Eric Trump har ju sagt att vi tänker oss att vi i framtiden bygger en i Alabama eller något sånt.
Men gränsen för när det är made in America är ju ganska svår Vag, för du kan ju typ beställa massa komponenter och sen sätta ihop dem eller såhär du beställer färdig telefon och så bara typ ändrar du någon del i den och så ja jag vet inte jag tycker ju bara tänk detta
[00:04:36] Madde: skulle hända i Sverige exakt, du kan beställa en ja, Ulf Kristersson telefon, exakt och
[00:04:43] Sofia: det är ju såhär, Kristersson släpper en mobilapparatör ja
[00:04:48] Madde: Alltså det är så...
Jätteknäppt.
[00:04:51] Sofia: Det är så stört. Det är så sjukt land. Man känns
[00:04:56] Madde: ju inte som att någon annan president skulle göra det heller. Eller
[00:04:59] Sofia: presidentkandidat. Det är någonting man förväntar sig av Kim Jong-un
[00:05:05] Madde: Kim Jong-un. Nej. Ja men något sånt
[00:05:11] Sofia: land.
[00:05:12] Madde: Det är så clownigt på något sätt. Bara man tittar på typ Kanada så är det ju så mycket bättre.
[00:05:18] Sofia: Ja verkligen. Ja nej men så vi länkar till er om någon annan är sugen. Så kan ni vänta med att beställa mobiler tills den här kommer ut. Exakt.
[00:05:30] Madde: Ska vi ta och tacka våra stjärnsupportrar på Patreon? Ja. Så stort tack till Alicia, Anders Nylund, Björn Jonsson, Dark Rönnell, Hest fick stor kund, jätten, Kajetan Kazimierczak, Lars Nyström, Martin Haagen, Molly Haglund, Oskari, Per Nåtby, Selim Hjorthall, och Tomas Nilsson
[00:05:51] Sofia: Tack till er och tack till alla andra som stöttar oss på Patreon också.
Så att vi har råd med våra Trump-phones. Exakt. Kan man göra avdrag på dem? Ja, det är klart man kan. Men jag vet inte, jag undrar om de kommer att finnas och beställa i Europa. Det känns bara som en USA-grej. Ja, man skulle ens vilja
[00:06:09] Madde: importera dem. Vad
[00:06:11] Sofia: är marknaden här för det? Fast finns ju
[00:06:14] Madde: sådana riktiga hillbillis som är sådana amerikanska fans här också.
Ja.
[00:06:18] Sofia: Ja, men jag är bara såhär Vem i USA kommer ha en Och vilken kändis Kommer vara ansiktet utåt För att skaffa dem här Ja,
[00:06:30] Madde: det finns ju vissa som är öppna Trump supporters Typ Kanye West och sånt Ja, han kanske skulle kunna ha det Det de två med allt som han gör Ja,
[00:06:40] Sofia: well well Jag tänker såhär Du är på en intervju är på en intervju Och så går det såhär skitbra du bara glider igenom de mesta frågorna, du känner såhär det här är det mesta kan jag ha jobbat med liksom, och sen är de såhär bra, men kan du också nämna fem vanliga cash-strategier alltså för typ det där rollspel
[00:07:09] Madde: vad vad säger du då ja Alltså för några dagar sedan så hade jag ju sagt Jag vet inte Kan du upprepa frågan?
Men nu när vi har pratat om att vi ska prata om cashning idag så har jag absolut mer koll nej men det är väl såhär cashningsstrategier ja absolut att jag vet att det finns olika sätt att hantera cash och hur man cashar sen har jag kanske inte vetat exakt vilket namn respektive har och sånt så att jag skulle liksom inte kunna säga att det är den här och den här som gör ditten och datten utan det är den här funktionaliteten vet jag man kan göra
[00:07:51] Sofia: Jag hade nog känt mig väldigt dum i en sån intervju för jag hade verkligen blivit så, vad menar man med cash-strategier?
Jag har aldrig hört någon benämna det på det sättet, mer att om någon hade gett mig ett scenario, du har... En sida som ska ladda in produkter och det här är förutsättningarna, hur skulle du lösa det då? Då hade man kunnat svara på det, men om man hade fått den här frågan, det hade varit rätt jobbigt.
Dessutom fem stycken.
[00:08:23] Madde: Jag tror man kan komma på
[00:08:25] Sofia: tre eller två som man brukar använda själv. Nej, så vi tänkte att vi skulle prata om cash lite idag. Det här är ingen... Överkurs, jag tror när man hör det så blir det såhär, ja men det här makes sense, men det är lite nice att Och sen kunna ha namnet på dem här.
Ja, kunna briljera lite.
[00:08:50] Madde: Sitter man där på någon sån nerdquiz kan man säga nej jag vet att det här är cash aside.
[00:08:55] Sofia: Ja, exakt. Men ska vi säga lite vad cash är? Jag tror att de flesta människor överhuvudtaget har ju hört talas om cash. För man är ju såhär du ska tömma dina cookies och cash. Har typ din farmor gjort.
Men vad är cash? Cash
[00:09:12] Madde: Alltså jag satt precis nu och tänkte på, vad betyder ens ordet cash? För jag tänkte på ge och cashing. Alltså betyder det inte typ screen eller något sånt? Alltså jag har fått fram att det är som en liten låda eller någonting som man kan stoppa saker i. Jo kanske. Det borde ju
[00:09:30] Sofia: vara,
[00:09:30] Madde: ja Ja, men när man pratar om cache i datasammanhang i alla fall så är det ju ett sätt att, vad ska man säga, man mellanlagrar datan som man ofta frågar efter för att få lite snabbare svarstid och lite lägre latency eller latens.
Till exempel då istället för att behöva slå upp från databasen som kanske är lite långsam eller läsa in från en fil eller någonting så har man då en cache däremellan som man snabbt kan fråga och så ligger det sparat i minnet. Men problemet där är ju att minnet är begränsat så att det finns ju inte plats för hur mycket som helst.
Så man måste ju ändå ha lite eftertanke med vad vill man spara i cashen, hur ska man uppdatera hur ofta, när ska man läsa, när ska man skriva. Och det då det som är cash-strategin.
[00:10:17] Sofia: De populäraste implementationerna av cashes är nog kanske Redis och Memcached. Ja det är viktigt i alla fall att ha koll på så här, vad är det jag försöker lösa och då se vilka constraints har man och då kommer de här strategierna in.
Så om vi ska ta den första då. Som heter Cash Aside eller Lazy Loading. Jag tror att folk har hört om Lazy Loading men inte Cash Aside. Eller har jag fel? Jag
[00:10:45] Madde: blev så förvirrad för Lazy Loading för mig egentligen är ju något annat. Det är ju mer typ så här. Jag kommer till kontakt med det i browsen. När du typ laddar in bilder eller andra resurser när du behöver dem.
Ja,
[00:10:58] Sofia: när du så här scrollar. Ja men till exempel
[00:11:01] Madde: att
[00:11:01] Sofia: den dyker upp senare. Ja men så om vi ska ta... Ta exempel på den här användstan. Den här kan man ändå, tycker jag kanske lära sig namnet på, för det här är väl typ den mest populära cash-strategin det här är typ det vanliga.
[00:11:20] Madde: Jag skulle säga att typ alla gånger jag har skrivit en cash har jag skrivit då en cash aside.
Ja, som sagt, det är den vanligaste, men det är... Det är det som känns ringligt liksom. Men som sagt, som du sa, det beror ju verkligen på vad det för scenario. Men nu till exempel, när jag jobbade med e-handel så cashade vi till exempel produkter i minnet. För vi läste in dem från en ganska stor JSON-fil. Och då var det ju verkligen så här.
Alltså det var ju till exempel när man har startat om appen efter en deploy eller någonting. Så blev ju först inläsningen väldigt långsam Men sen så gick det ju supersnabbt efter det,
[00:12:00] Sofia: tills nästa
[00:12:01] Madde: gång man började starta
[00:12:02] Sofia: om. Appen försöker först läsa data från cache'n. Om datat inte finns i cache'n, då sker det man kallar för cache-miss.
Det här är ganska bra att ha koll på vad en cache-miss är. Så vid en cache-miss då läser appen från databasen istället Och då kommer den hämtade datan och skrivs in i cashen. Det är bra att notera att cashen inte kommunicerar direkt med databasen Det är appen som gör det. För
[00:12:33] Madde: det är lite skillnad på de olika strategierna.
Vem det är som pratar med vem. I vissa fall är ju appen helt ovetandes. Och då är det cashen som är typ så här orkestrerade. Men ja, så det är lite olika.
[00:12:49] Sofia: Men ja,
[00:12:49] Madde: finns det någon nackdel med den här då? Alltså kan det hända någonting?
[00:12:53] Sofia: Det finns en risk för att det kan bli så här data inconsistency Och att du kan få extra latens på grund av alla nätverksrundor du behöver ta.
Så det finns ju en nackdel med alla de här.
[00:13:12] Madde: Ja, så är det ju. Ja, när som sagt vanligaste, då cash aside. Sen har vi en annan strategi som heter write through. Så om vi ska dra ett exempel på det också då. Säg att du ändrar någonting i din profil. Och det sparas direkt och det känns alltid som att det är färskt Även om du byter enhet.
Säg till exempel att du byter din hemadress i Mathem-appen. Så uppdateras den direkt i cashen och i databasen. Och nästa gång du beställer då, och det kan vara från annan enhet, så finns adressen redan färdigfylld. Så det här är en strategi som man använder där man inte skriver så himla ofta Alltså att skrivfrekvensen är låg.
Men det är viktigt att datan alltid är aktuell och färsk. Så det som då blir speciellt med den här strategin om man jämför med föregående är att Write-through-cache-säkerställer att det alltid är väldigt stark konsistens mellan cachen och databasen. Det blir liksom ingen skillnad och mismatch i datan.
För det kan ju hända liksom om Om du har använt Lazy Loading eller CacheSide och uppdaterat någonting i databasen och sen har du en cache på en timma Så kan det ju vara att det ligger ett gammalt värde i cachen som inte har i databasen. Men eftersom den här write-through skriver både till cache och till databasen så uppstår inte de problemen.
Så om vi ska gå igenom steg för steg. Appen skriver då till cachen. Och sen så är det cashen som skriver vidare till databasen och det sker synkront. Och sen så, ja, appen då den interagerar aldrig direkt mot databasen utan det är alltid cashen som gör det.
[00:14:59] Sofia: Mm. Ja, där är det en lilla skillnad. Annars känns det ju alltid likadant alla de här strategierna.
[00:15:06] Madde: Ja, men typ. Så ja, som sagt, den här ger ju bättre... Datakonsistens men däremot så blir det högre latens när man ska skriva någonting och sen kan det också vara så att man faktiskt löser upp en massa kanske ett rum på data som kanske väldigt sällan används så den är ju inte optimerad på det sättet så det är liksom, ja man får överväga baserat på sitt scenario
[00:15:34] Sofia: Mm Sen har vi read through då.
Och i det här exemplet så kan det vara typ att du går in på Zalando och så öppnar du någon kategori typ sneakers. Och då läser appen först från cache. Om det inte finns något där så hämtar cache nya produkter från databasen och fyller på. Och det här används vid väldigt lästunga scenarier. Typ om du ska läsa in...
Ett nyhetsflöde eller en produktkatalog som vi pratade om förut. I strategin Read Through Cache så placeras cachen mellan appen och databasen. Så det betyder att alla läsningar går genom cachen. Så steg för steg är det att appen läser från cachen. Får du en cache miss så läser cachen från databasen.
Datan skrivs till cachen. Och returneras till appen. Så appen interagerar alltså inte direkt med databasen. Utan det gör allt i cashen. Och den här strategin har låg latens. Men det finns ändå risk för datainkonsistens. Så det är en minimal liten skillnad från den du pratade om innan. Ja men
[00:16:51] Madde: det handlar väl om skriva versus läsa egentligen.
Ja. Ja nej det är verkligen subtila små skillnader. Ja, sen har vi ju då strategin som heter Write Back. Här tycker jag ändå man börjar se lite mer skillnad i, för mig är det lättare att förstå skillnaderna, men vi tar exempel att man är inne och skriver i ett dokument i Google Docs eller någonting, så när du skriver så sparas det direkt i minnet eller cashen.
Och det gör ju att det upplevs som väldigt snabbt och responsivt Du känner ju liksom inte att det är nu laggar det för att sitta här och spara ner det. Spara i
[00:17:29] Sofia: bakgrunden,
[00:17:30] Madde: ja. Och det kan ju hända att du tappar internet men att det som jag har skrivit finns kvar. För de ändringarna som görs de skickas till servern lite senare i bakgrunden.
Däremot om hela datorn kraschar då kanske man har förlorat det man skrev sen sist. Men write-back-strategin används i mer skrivtunga system där det är viktigt med throughput, bättre på svenska, genomströmning. Det fina med den här strategin är ju att det blir bättre prestanda det upplevs som snabbare, det gör att man kan ha batchning och att latensen där man skriver blir väldigt låg.
Så... Ja, appen skriver ju direkt till cashen och sen så skriver cashen till databasen asynkront så att det sker hela tiden i bakgrunden utan att man behöver lägga märke till det. Däremot som jag nämnde innan det kan ju bli risk för att datan försvinner om nu... Cashen kraschar innan den har hunnit skriva till databasen.
Det är ju en nackdel där. Det
[00:18:43] Sofia: tycker jag man kan känna igen. Jag vet inte, det sker ju inte ofta men typ att sista ordet eller meningen inte har synkats i någonting som man gjort. Ja, precis. Och den femte och sista då är write around. I det här exemplet är du en boomer. Mm, så att du har ju Facebook då, men
[00:19:03] Madde: du
[00:19:09] Sofia: är boomer så att du har Facebook så du vill såklart ladda upp en ny fräsch profilbild på Facebook, det är mycket filter eller så är det från din katalog när du gick på gymnasiet.
Eller en bild underifrån screenshot
[00:19:25] Madde: av ditt fotalbum och så ser du längst ner halvhandelsbilder som ligger bredvid ja men
[00:19:33] Sofia: du laddar upp en ny profilbild och den här profilbilden den går direkt till databasen, cashen används inte, så när andra kollar på din profil Och den nya bilden inte finns i deras cache så hämtas den och sparas i cachen för framtida visningar så alltså du laddar upp bilden med första visningen för andra, den är lite långsamt och efter det så är det supersnabbt varje gång och det här används då för stora datamängder när uppdateringar sker sällan så att ganska likt de andra men det handlar om storleken är det du sparar och skriver Så här funkar det steg för steg i write around cache appen skriver direkt till databasen man försöker läsa data från cachen om du får en cache miss så läser appen från databasen och därefter uppdateras din cache så även om strategin Optimerar cache-utrymmet för data som ofta läses så finns det risk för att din latens ökar på grund av cache-misses.
[00:20:46] Madde: Om man tar alla till exempel då skrivstrategierna alltså write through, write around, write back. Skillnaden är egentligen när man skriver till cache och när man skriver till databasen. Alltså i write-through, den skriver ju både till cache och till databasen samtidigt. Write-around skriver endast till databasen och inte till cachen.
Och write-back skriver till cachen först och sen uppdaterar den databasen i efterhand.
[00:21:15] Sofia: Alltså... Men slutsatsen är väl, tycker jag egentligen att, ja det tyckte jag var rätt sjukt att fråga någon en sån här fråga och förvänta sig att man kan lista ens tre sådana här vid namn.
[00:21:28] Madde: Ja, det tror jag inte
[00:21:30] Sofia: Det handlar mer om att man förstår att det finns skillnader i när...
Du läser in mycket och tung data eller när du sparar någonting väldigt sällan alltså att man kan resonera kring det. Som jag hade fått en sån här fråga så hade jag nog försökt rädda det genom att Ja okej men kan ni föreslå ett scenario eller att jag hade själv sagt, okej men om vi tänker oss till exempel en produktkatalog, då hade jag nog gjort så här.
Och så hade jag sagt, men om det till exempel är en profilbild, då hade man kanske gjort så här istället. Det är mycket bättre
[00:22:13] Madde: Är det stora hela? Det första att tänka på är ju, vill man ha snabb inläsning eller snabb skrivning? Så ja, då har man ju ändå sorterat bort några stycken. Ja, hur viktigt det är
[00:22:25] Sofia: att det är korrekt typ och sånt där.
[00:22:28] Madde: Ja då har folk förhoppningsvis lite mer koll i alla fall. Eller så var det bara du och jag som inte kunde detta. Alla
[00:22:37] Sofia: visste de här. Och
[00:22:38] Madde: sen bara, men snälla.
[00:22:40] Sofia: Jag tror att det här är överkurs, även om man inte kan namnet på de här, att faktiskt kunna cash-strategier och ha jobbat med det. Är ganska avancerat eller så har man bara haft tur att du har jobbat på en e-handel så du har tänkt mycket på det här men då är det också kanske bara en strategi det är jag skulle säga att det här är mer seniorämne att arkitektera något sånt här ja verkligen bra, fin jämngång
[00:23:17] Madde: Men vi ses ju som vanligt nästa vecka Det gör
[00:23:21] Sofia: vi Ha
[00:23:22] Madde: det bra
Skapare och gäster

