Redis is een in-memory dataopslag, wat betekent dat het data in het RAM van de server bewaart in plaats van op een harde schijf. Omdat RAM veel sneller is dan schijf, kan Redis waarden lezen en schrijven in ruim onder een milliseconde. Daarom is het een favoriet voor caching en realtime functies.
Stel je een kok voor die de meestgebruikte ingrediënten op het aanrecht houdt in plaats van telkens naar de koelcel te lopen. De koelcel is je hoofddatabase; Redis is het aanrecht. Als je app een waarde nodig heeft die hij net heeft opgehaald, geeft Redis die direct terug in plaats van de tragere relationele database erachter lastig te vallen. Het slaat data op als simpele sleutel-waardeparen en ondersteunt handige structuren zoals lijsten, hashes en een set.
Omdat het zo snel is, is Redis ook populair voor dingen als loginsessies, ranglijsten en taakwachtrijen. Het is een van de bekendste tools in de NoSQL-familie.
Maar er is een afweging. RAM is kleiner en duurder dan schijf, dus je cachet de data die vaak wordt gelezen, niet alles wat je hebt. En een cache kan verouderen: pas je een prijs aan in de hoofddatabase maar vergeet je die in Redis te wissen, dan zien klanten het oude bedrag tot de gecachete kopie verloopt. Dus de meeste teams zetten een korte vervaltijd op elke sleutel, een stille verloopdatum die voorkomt dat gecachete data te ver afdrijft van de waarheid.
Een typisch patroon is read-through. De app vraagt eerst Redis, en alleen bij een misser valt hij terug op de hoofddatabase, om dat resultaat daarna te bewaren voor het volgende verzoek. De eerste bezoeker betaalt de trage query; iedereen daarna krijgt de snelle kopie. Daarom kan een homepage die de database veertig keer raakt terugzakken naar één of twee queries zodra Redis ervoor staat.
Bij TopDevs voegen we Redis toe waar de app van een klant direct moet aanvoelen, zodat de hoofddatabase wordt ontlast en pagina’s en API’s snel blijven, ook onder druk.