Go to blue arrow
back to Tech Blog
Utveckling

Written by:

Last Published:

3 augusti

Min Read

Memcached eller Redis: vad ska man välja?

Två minnespinnar för dator-RAM med svarta chips på gröna kretskort.

Du behöver en server-side cache, har läst två jämförelsesidor och båda säger att det beror på. Hjälpsamt. Så låt oss reda ut frågan om Redis kontra Memcached direkt: Memcached är det bättre valet när du vill ha en enkel, snabb cache och inget mer, medan Redis är det bättre valet när cachen behöver hantera strukturerad data, överleva en omstart eller avlasta din applikation.

Både Redis och Memcached är:

  • NoSQL-baserade nyckel-värde-lagringssystem i minnet, vilket innebär att båda lagrar data i arbetsminnet och adresserar den via nycklar istället för frågor
  • öppen källkod
  • använda för att snabba upp applikationer
  • stödda av de stora molntjänstleverantörerna

Det är där de flesta artiklar slutar. Den här fortsätter, eftersom de intressanta skillnaderna börjar efter den punkten.

blå pil till vänster
Imaginary Cloud-logotyp

Vad är skillnaden mellan Memcached och Redis?

Båda lagrar data i arbetsminnet för att göra applikationer snabbare, men de är inriktade på olika typer av problem.

Memcached är enkelt. Det erbjuder grundläggande nyckel-värde-lagring och är utmärkt för snabb cachning av data tack vare sin flertrådade prestanda.

Redis har stöd för mer komplexa datatyper och permanent datalagring, vilket gör det mångsidigt för ett bredare spektrum av uppgifter som meddelandehantering och sessionshantering. Det erbjuder även avancerade funktioner som datasharding, vilket innebär att en datamängd delas upp över flera servrar så att ingen enskild maskin behöver lagra allt, samt ett urval av strategier för borttagning av data.

Baserat på ett projekt vi utvecklade för en kund kommer jag att gå igenom hur de hanterar datalagring, skalbarhet och vilken av dem som presterar bäst i olika scenarier. Först, grunderna.

blå pil till vänster
Imaginary Cloud-logotyp

Vad är Redis?

Redis, som står för Remote Dictionary Server, skapades 2009 av Salvatore Sanfilippo för att förbättra skalbarheten i den webblogganalysator som hans italienska startup höll på att bygga. Den första prototypen skrevs i Tcl och översattes senare till C. När Sanfilippo gjorde projektet till öppen källkod började det få genomslag. GitHub och Instagram var bland de första företagen som började använda det, och projektets egen dokumentation är än idag referensen för dess funktioner och begränsningar.

blå pil till vänster
Imaginary Cloud-logotyp

Vad är Memcached?

Memcached kom till lite tidigare, år 2003, och skapades av Brad Fitzpatrick för hans webbplats LiveJournal. Det utvecklades ursprungligen i Perl och översattes sedan till C. Några av världens största företag använder det, däribland Facebook, YouTube och Twitter, och dess funktionalitet finns dokumenterad i Memcached-wikin.

Web and mobile development banner with an isometric computer monitor and smartphone app featuring a React logo.
blå pil till vänster
Imaginary Cloud-logotyp

Redis vs Memcached: hur de lagrar data

Hur Redis lagrar data

Redis är egentligen inte en nyckel-värde-lagring, utan en server för datastrukturer. De fem du kommer att använda mest är:

  • Sträng: ett textvärde
  • Hash: en hashtabell med strängnycklar och värden
  • Lista: en lista med strängvärden
  • Mängd: en lista med unika strängvärden
  • Sorterad mängd: en lista med unika strängvärden sorterade efter ett poängvärde

Utöver dessa finns även bitmappar, bitfält, HyperLogLogs (probabilistiska kardinalitetsräknare) och geospatiala index, samt strömmar för loggar som endast kan utökas. JSON, frågor, tidsserier och — från Redis 8 — vektoruppsättningar läggs till via moduler (dokumentation för Redis datatyper). Det är långt ifrån bara "nycklar och strängar", och den bredden är hela anledningen till att Redis är användbart i sammanhang där en enkel cache inte räcker till.

Redis har stöd för operationer på datatyper, vilket innebär att du kan läsa eller ändra en del av ett objekt utan att behöva läsa in hela objektet i din applikation, redigera det och spara tillbaka det.

För minneshantering används en inkapslad version av malloc/free, standardmekanismen i C för att begära och frigöra minne. Det är enklare än Memcacheds Slab-mekanism, som jag går in på nedan.

Nycklar kan vara upp till 512 MB, och detsamma gäller värden, vilket framgår av dess dokumentation för datatyperFör aggregerade datatyper som listor och mängder gäller den gränsen per element.

Hur Memcached lagrar data

Memcached har inga datatyper. Det lagrar strängar indexerade med en strängnyckel, och det drar mindre minne än Redis för den fördelen.

Det begränsas också av minnet på maskinen där det körs. När det blir fullt börjar det rensa värden enligt principen "minst nyligen använd" (LRU). Dess allokeringsmekanism, Slab, delar upp minnet i block av olika storlekar och lagrar varje nyckel-värde-post i det block som passar. Det är detta som förhindrar att minnet fragmenteras i luckor som är för små för att återanvändas.

Nycklar har en maxgräns på 250 byte och värden på 1 MB. Det är dock standardvärden, och du kan höja den maximala slab-storleken vid uppstart (se Memcached-wikin).

Där Redis datatyper minskar arbetsbördan för din applikation

Se ett cachat objekt som en jacka som lämnas in i en garderob. Med Memcached kan du bara hämta ut hela jackan: för att ändra något i en ficka måste strängen laddas, deserialiseras, fältet redigeras, serialiseras och lagras igen.

Redis låter dig nå in i fickan. Datatypen hash ger dig åtkomst till varje fält individuellt, så att alla CRUD-operationer (skapa, läsa, uppdatera, ta bort) körs mot just det fältet. En nätverksförfrågan, ungefär till samma kostnad som en vanlig get eller set, ersätter fyra utbyten och två serialiseringssteg.

Här är samma sessionsuppdatering på båda sätten:

# Memcached — the whole session object is the unit of work
value   = mc.get("session:42")             # 1. fetch the whole blob
session = deserialise(value)               # 2. deserialise in app memory
session["last_seen"] = now()               # 3. edit one field
mc.set("session:42", serialise(session))   # 4. serialise + write it all back
# → 2 network round trips, 2 (de)serialisation steps, in your app code

# Redis — the field is the unit of work
HSET session:42 last_seen <now>            # one round trip, no (de)serialisation
# → the read-modify-write collapses into a single command on the server

Anledningen till att detta fungerar är inte specifik för vårt projekt. Redis egen dokumentation och oberoende prestandatester visar att det är att minska antalet nätverksförfrågningar, snarare än att snabba upp kommandon, som ökar genomströmningen – se prestandasektionen nedan för siffrorna.

Side-by-side architectural diagram comparing Redis vs Memcached data caching and hash updates.
blå pil till vänster
Imaginary Cloud-logotyp

Så här skalar Redis och Memcached

Så här skalar Redis

Redis är i huvudsak enkeltrådat, vilket innebär att en kärna exekverar kommandona oavsett hur många kärnor maskinen har. (Trådad I/O introducerades i Redis 6, och Redis 8 samt Valkey-forken har utvecklat multitrådad I/O ytterligare – men själva kommandona körs fortfarande på en tråd; AWS noterar samma distinktion mellan enkeltrådad exekvering och multitrådad I/O i sin Jämförelse av ElastiCache-motorer.) Med inbyggt stöd för klustring skalar det istället väl horisontellt.

Klustring bygger på en master/slave-arkitektur, där en nod tar emot skrivningar och de andra lagrar kopior av datan. Varje master har två slavar för redundans, så om mastern går ner befordras en av dem automatiskt av systemet. Kostnaden ligger i underhållet: det är svårare att hålla flera synkroniserade noder i drift än en enskild nod.

Så här skalar Memcached

Memcached skalar enkelt vertikalt eftersom det är multitrådat. Ge det fler kärnor och mer minne, så är saken klar.

Det skalar även horisontellt, på klientsidan, genom en distribuerad algoritm som du själv implementerar. Det kräver mer arbete än Redis, som har inbyggd klustring från start.

blå pil till vänster
Imaginary Cloud-logotyp

Persistens och eviktering: vad som sparas

Den största skillnaden mellan dessa två är vad som överlever en omstart. Redis är (till största del) en datalagring i minnet och är inte flyktig. Memcached är en cache i minnet och är flyktig: starta om processen och innehållet är borta.

Hur Redis uppnår persistens

Redis har stöd för persistens, vilket är anledningen till att det kallas för en datalagring, på två sätt (Dokumentation om Redis-persistens):

  • RDB-ögonblicksbild: en ögonblicksbild av hela din datamängd vid en viss tidpunkt, som skrivs till en fil på disken med angivna intervall. Datamängden kan sedan återställas vid uppstart.
  • AOF-logg: en loggfil (Append Only File) över varje skrivkommando som utförs på servern. Den ligger också på disken, så genom att köra kommandona i ordning återskapas datamängden vid uppstart.

En underprocess hanterar dessa filer, och den detaljen avgör vilken du bör välja.

Är en stor datamängd ett problem? För RDB, ja. Filen tar tid att skapa, vilket påverkar svarstiderna, även om den laddas snabbare vid uppstart än vad AOF-loggen gör.

Välj AOF när dataförlust inte är acceptabelt under några omständigheter. Den kan uppdateras vid varje kommando och eftersom den endast lägger till data uppstår inga korruptionsproblem. Den blir dock betydligt större än en RDB-ögonblicksbild.

Vad Memcached sparar

Ingenting, enligt design. Ingen ögonblicksbild, ingen logg. En omstart, en krasch eller en failover innebär att cachen startar tom, och den första vågen av förfrågningar efteråt går rakt igenom till databasen.

Det fungerar bra när cachen innehåller härledd data som är billig att beräkna på nytt. Det blir ett problem för kapacitetsplaneringen när så inte är fallet.

Hur de evikterar data

Memcached är begränsat till evikteringspolicyn LRU (least recently used), medan Redis har stöd för åtta (Dokumentation om Redis-nyckeleviktering):

  • Ingen vräkning, returnerar ett fel när minnesgränsen nås.
  • Alla nycklar LRU, tar bort nycklar baserat på minst nyligen använd först.
  • Volatil LRU, tar bort nycklar som har en utgångstid inställd, baserat på minst nyligen använd först.
  • Alla nycklar LFU, tar bort nycklar baserat på minst ofta använd först — detta prioriterar långsiktig popularitet framför nyligen gjorda åtkomster.
  • Volatil LFU, samma sak, men endast bland nycklar som har en utgångstid inställd.
  • Alla nycklar slumpmässigt, tar bort nycklar slumpmässigt.
  • Volatil slumpmässigt, tar bort nycklar som har en utgångstid inställd, slumpmässigt.
  • Volatil TTL, tar bort nycklar som har en utgångstid inställd, baserat på kortast återstående livslängd först. TTL står för time to live, nedräkningen efter vilken en nyckel löper ut av sig själv.

Vad du får ut av detta är kontroll. Med Memcached bestämmer LRU och du får leva med det. Med Redis kan du skydda de nycklar som inte får försvinna och låta allt annat vräkas runt dem.

blå pil till vänster
Imaginary Cloud-logotyp

Prestanda och passform: vad varje cache faktiskt är bra på

Redis vs Memcached-prestanda: vad siffrorna visar

Det är oftast här jämförelsesidor byter ut bevis mot påståenden. Låt oss använda siffror istället.

Redis publicerar sina egna genomströmningstal. Deras benchmark-dokumentation rapporterar att en enklare Linux-server som kör en enskild Redis-instans hanterar i storleksordningen 100 000 förfrågningar per sekund med små nyttolaster, med sub-millisekunders latens på ett lokalt nätverk. Det taket gäller för en kärna. Kommandoexekvering är enkeltrådad, så att lägga till kärnor på maskinen höjer inte detta. Redis 6 lade till trådad I/O, vilket parallelliserar socket-läsningar och -skrivningar, men själva kommandona körs fortfarande på en tråd.

Memcached är flertrådad från början till slut, så dess genomströmning ökar med antalet kärnor tills nätverksgränssnittet mättas. Det är hela dess prestandafördel, och den är genuin: på en maskin med många kärnor som serverar stora, enkla värden flyttar Memcached mer data per sekund än vad en enskild Redis-process kan. Det är därför AWS dokumenterar de två olika även inom samma hanterade tjänst – deras eget whitepaper noterar att Memcached "utnyttjar större [instans]storlekar med flera kärnor väl", medan Redis hanteras mer som en tillståndskänslig databas (Memcached vs. Redis: Prestanda i skala med Amazon ElastiCache).

Två förbehåll är viktigare än rubriksiffrorna. För det första är en Redis-distribution sällan en enskild process, och sharding över instanser vinner tillbaka flerkärnsfördelen till priset av klusterunderhåll. För det andra är operationer per sekund fel måttstock när ett Redis-kommando ersätter flera applikationsanrop. En uppdatering av ett hash-fält är ett nätverksutbyte där Memcached behöver en läsning, en deserialisering, en skrivning och en serialisering. Redis kan vara långsammare per operation och ändå komma i mål först.

Detta är inte bara vår egen erfarenhet; mekanismen är dokumenterad och mätbar. Eftersom varje kommando innebär ett nätverksanrop är det svarstiden – inte kommandoexekveringen – som vanligtvis begränsar genomströmningen. Redis egen guide för pipelining gör poängen tydlig: på en länk med 250 ms svarstid begränsas en server som klarar 100 000 förfrågningar per sekund till ungefär fyra per sekund tills du slutar betala för ett anrop per kommando. Oberoende benchmarking visar vinstens storlek: i ett flitigt citerat test kört på DigitalOceans infrastruktur, tog det att slå ihop anrop en standard redis-benchmark från cirka 97 000 GET/s till ungefär 1,35 miljoner GET/s – en vinst på ca 14 gånger som helt kom från att ta bort nätverksutbyten, inte från snabbare kommandon. Det är samma hävstång som vår ändring av sessionsobjekt använde, fast i en annan form: ett hash-kommando istället för en läsning, en deserialisering, en redigering, en serialisering och en skrivning. (Pipelining grupperar många kommandon; hash-typen slår ihop en läs-ändra-skriv-cykel – olika tekniker, identisk princip: färre resor över nätverket.)

Regeln är alltså: Memcached för en hög volym av oberoende läsningar av hela värden på en stor maskin. Redis där datans form gör att du kan utföra färre, smartare operationer.

När Redis förtjänar sin extra komplexitet

Tre situationer rättfärdigar den operativa kostnaden, och de delar en gemensam nämnare: cachen gör något som dina applikationsservrar annars skulle behöva göra.

  • Sessionsdata som uppdateras delvis. Detta är fallet från vårt eget klientarbete, beskrivet nedan. Ett sessionsobjekt där ett fält ändras vid nästan varje anrop. Hash-typen slår samman en läs-, redigerings- och skrivcykel till ett enda kommando, och sparandet ökar med antalet samtidiga användare snarare än med cachestorleken.
  • Räknare och rankningar som läses samtidigt som de skrivs. Sorterade mängder håller en rankning i ordning medan den uppdateras, så en topplista eller en hastighetsräknare läses direkt från cachen. I en vanlig cache måste du beräkna om ordningen i applikationskoden varje gång.
  • Arbete som måste överleva en omstart eller nå flera konsumenter. Persistens hanterar det första. Pub/sub, en publicera-och-prenumerera-modell där meddelanden skickas ut till de klienter som lyssnar, hanterar det andra. Memcached har inget motsvarande för något av dem, så om något av detta är ett krav är jämförelsen redan över.

När Memcached är rätt val

Memcached passar när cachen genuint är en cache: värden som skrivs i sin helhet, läses i sin helhet och som det är säkert att förlora.

  • Databasfrågeresultat. Det klassiska fallet, och fortfarande det starkaste. Cacha resultatet av en resurskrävande fråga under en nyckel som härleds från dess parametrar och låt LRU avgöra vad som ska finnas kvar. Om frågorna bakom dessa resultat är analytiska snarare än transaktionella, ändrar distinktionen vi täcker i OLTP vs OLAP vad som är värt att cacha från början.
  • Renderade fragment och hela svar. HTML-fragment, serialiserade API-svar och andra strängar som är resurskrävande att generera är precis vad slab-allokeraren byggdes för. Cache-strategin skiftar beroende på API-stil, vilket vi täcker i GraphQL vs REST.
  • Atomära räknare där det är acceptabelt att förlora räkningen. Inkrementering och dekrementering är atomära i Memcached, vilket räcker för att hastighetsbegränsa ett publikt API. Behöver du att räkningen överlever en omstart? Då är det ett jobb för Redis.
blå pil till vänster
Imaginary Cloud-logotyp

Exit-kostnadstestet: varför det är enklare att migrera från Memcached till Redis än tvärtom

Här är den del som sällan hamnar på en jämförelsesida. Vi kallar det för exit-kostnadstestet: innan du väljer en cache, fråga dig vad det skulle kosta att lämna den. De två svaren är inte symmetriska.

På Imaginary Cloud har vi använt båda i många olika kundprojekt. I ett av dem som jag var involverad i behövde vi välja mellan dem. Vi började med Memcached för dess enkelhet, användarvänlighet och smidiga installation, och eftersom vi bara behövde en cache var persistens inget krav. Efter en tids testande bytte vi till Redis för fördelarna med att ha datatyper.

Operationerna för datatyper passade den typ av data vi lagrade. Redis tillhandahåller även ett kommando för att söka efter nycklar som matchar ett mönster, tillsammans med många andra kommandon för att arbeta med nycklar, och det visade sig vara den funktion vi ständigt återkom till. Det blev den avgörande faktorn för migreringen.

Själva migreringen var okomplicerad eftersom Redis stöder de flesta kommandon som Memcached har. Peka om klienten, låt cachen fyllas på och fortsätt.

Att gå åt andra hållet är en helt annan historia. Memcached har inga datatyper, så varje kommando för Redis-datatyper måste översättas till flera Memcached-kommandon med databearbetning däremellan för att nå samma resultat. Den logiken hamnar tillbaka i applikationskoden som du precis hade flyttat ut den ifrån.

Den asymmetrin är testet. Börja med Memcached och du behåller en billig utväg till Redis. Börja med Redis, upptäck att du bara behövde en enkel cache, och du får skriva om applikationslogiken för att ta dig tillbaka. När kraven är genuint osäkra förtjänar exit-kostnaden mer vikt än något benchmark.

blå pil till vänster
Imaginary Cloud-logotyp

Vilket är bäst: Redis eller Memcached?

Redis är mer flexibelt och har fler funktioner. Memcached fyller fortfarande en viktig funktion och presterar i vissa fall bättre, eftersom flertrådshantering ger fördelar när du flyttar stora mängder enkel data.

Redis har stöd för dataoperationer tack vare sina datatyper, vilket minskar både antalet nätverksanrop och datamängden. En uppdatering av ett hash-fält kostar ungefär lika mycket som en vanlig get- eller set-operation, så arbetet utförs utan att belasta nätverket i onödan.

Så, finns det en vinnare? Nej, naturligtvis inte. Tillämpa prestandaregeln och gör sedan en analys av utgångskostnaderna. Välj Memcached för stora volymer av oberoende läsningar av hela värden på en kraftfull maskin. Välj Redis när datastrukturen tillåter färre och smartare operationer. När de två alternativen ligger nära varandra, välj det som är billigast att lämna. Vår erfarenhet är att man genom att väga för- och nackdelar mot varandra från början slipper en migrering mitt i projektet.

Kostnadskontroll med tre frågor: ägarskap, personal och risk

Om du godkänner arkitekturen snarare än skriver den, kokar den tekniska jämförelsen ner till tre kommersiella frågor. Vi använder dessa för varje infrastruktur- och stackval, inte bara cachelagring.

1. Vad kostar det att driva? Memcached har lägre minnesoverhead per objekt, vilket gör att samma arbetsmängd får plats i en mindre instans. Redis kostar mer per gigabyte cachelagrat när persistens och replikering är aktiverade, eftersom en RDB-snapshot kräver utrymme för den förgrenade barnprocessen och ett replikerat kluster multiplicerar antalet instanser. Liten skillnad vid några få gigabyte. Avsevärd vid några hundra.

2. Vem ansvarar för det på måndagsmorgonen? En enskild Memcached-instans kräver i princip noll underhåll. Ett Redis-kluster med master- och repliknoder, failover och optimering av persistens är ett system som någon måste ansvara för: övervaka det, testa failover och dimensionera snapshot-fönstret. Om den personen inte finns i ditt team är de ärliga alternativen en hanterad tjänst eller Memcached. ElastiCache eller MemoryDB flyttar arbetet till leverantören och lägger det på fakturan istället, vilket oftast är rätt avvägning för ett litet team.

3. Hur ser licensiering och kontinuitetsrisk ut? I mars 2024 gick Redis från BSD-licensen till en källkodstillgänglig dubbelmodell (RSALv2 och SSPLv1), vilket fick Linux Foundation att förgrena den sista BSD-utgåvan (7.2.4) som Valkey. I maj 2025 lade Redis 8 till AGPLv3 — en OSI-godkänd licens med öppen källkod — vid sidan av de källkodstillgängliga alternativen, så Redis levereras nu återigen under en trippel-licens, och Salvatore Sanfilippo hade återvänt till företaget året innan. Förgreningen bestod ändå: AWS själva påpekar att Redis 8.0 Community Edition är AGPLv3 (en copyleft-licens som många organisationer förbjuder) medan Memcached förblir BSD, och rekommenderar nu Valkey för nya ElastiCache-arbetsbelastningar (AWS: Jämför Redis och Memcached). Episoden är en påminnelse om att Redis är ett beroende med en kommersiell ägare och en licens som redan har ändrats under press. Memcached har varit BSD hela tiden utan en sådan historik. För de flesta team är detta inget hinder. För alla som bäddar in en cache i en produkt de distribuerar vidare — där AGPL-copyleft-klausulen kan ställa till det — är det en fråga att besvara innan koden skrivs, och Valkey är den tillåtande utväg som är värd att känna till.

Tid till värde gynnar oftast att börja enkelt. Memcached går snabbare att sätta upp, och som testet av utgångskostnader visar är det billigt att byta till Redis senare. Det omvända gäller inte.

Vanliga frågor

Är Redis snabbare än Memcached?

Inte universellt. Vid små värden per operation ligger de nära varandra, och Redis levererar en genomströmning på cirka 100 000 förfrågningar per sekund för en enskild instans på enklare hårdvara. Memcached är flertrådat, så på en maskin med många kärnor som hanterar stora, enkla värden flyttar det mer data per sekund. Redis vinner där dess datatyper ersätter flera anrop mellan applikation och databas med ett enda kommando.

Är Memcached fortfarande värt att använda?

Ja, när kravet faktiskt är en cache. För transient data, enkla värden, inget behov av persistens och när det finns gott om kärnor: Memcached är enklare att köra, har lägre minnesoverhead och nästan ingen operativ komplexitet.

Kan man migrera från Memcached till Redis?

Ja, och det är den enklare riktningen, vilket är hela poängen med testet för utgångskostnader. Redis stöder de flesta kommandon som Memcached har, så i praktiken pekar du om klienten och låter cachen fyllas på nytt. Att gå åt andra hållet innebär att skriva om datatypsoperationer till flera Memcached-kommandon plus bearbetning på applikationssidan.

Stöder Memcached persistens?

Nej. Memcached är en volatil cache i minnet: starta om den och innehållet är borta. Redis har persistens genom RDB-snapshots, punkt-i-tiden-dumpar till disk, eller en AOF-logg som spelar upp varje skrivkommando vid start.

Vilket är billigare att köra i stor skala?

Memcached, sett till infrastrukturkostnader, tack vare lägre minnesoverhead per objekt och enkelheten med enskilda instanser. Redis kostar oftast mer när replikering och persistens aktiveras. Kalkylen ändras om Redis avlastar dina applikationsservrar eller din databas, eftersom den besparingen kan överväga skillnaden i cachekostnad.

Hur är det med Redis-klustring och hanterade tjänster?

Redis klustrar inbyggt, med master- och repliknoder samt automatisk failover. Memcached distribuerar på klientsidan med hjälp av en sharding-algoritm som du implementerar själv. Hanterade tjänster erbjuder båda – och för nya driftsättningar använder ElastiCache och Memorystore numera som standard Valkey-forken med BSD-licens, vilket generellt är den förnuftiga vägen för team utan en dedikerad plattformsingenjör.

Bör jag titta på Valkey istället för Redis?

I allt högre grad, ja – det är anledningen till att den här jämförelsen har ett tredje namn sedan 2024. Valkey är Linux Foundations BSD-licensierade fork av Redis 7.2.4, API-kompatibel och numera standard hos de stora hanterade tjänsterna. Om din enda tvekan kring Redis är licensen, tar Valkey bort den utan att ändra hur du skriver mot cachen.

Försöker du bestämma vilken cache din arkitektur ska byggas på? Vi hjälper ingenjörsteam att välja infrastruktur som de har råd att köra och, lika viktigt, har råd att byta ut senare. Prata med vårt team om vart ditt system är på väg.

Cristiano Vicente
Cristiano Vicente

Webbutvecklare på Imaginärt moln, som är entusiastisk över Node.js och allt relaterat till back-end-utveckling.

LinkedIn

Läs fler inlägg av denna författare
Tiago Franco
Tiago Franco

VD på Imaginary Cloud och medförfattare till boken Product Design Process. Jag gillar mat, vin och Krav Maga (inte nödvändigtvis i den ordningen).

LinkedIn

Läs fler inlägg av denna författare

People who read this post, also found these interesting:

Dropdown caret icon