Wat is Redis: een complete gids voor toepassingen, voordelen en voorbeelden

Laatste update: 5 september 2025
  • Redis slaat gegevens op in het geheugen met geavanceerde structuren en atomaire bewerkingen.
  • Ondersteunt persistentie (RDB/AOF), asynchrone replicatie en hulpmiddelen zoals Pub/Sub en Lua.
  • Ideaal voor caching, sessies, berichten en ranglijsten met zeer lage latenties.

Gebruik en definitie van Redis
Als je ooit wilde dat je applicatie als een raket draaide, heb je waarschijnlijk wel eens van Redis gehoord. Deze technologie werkt als een in-memory datasysteem dat zeer lage latenties en bijna onmiddellijke reacties, ideaal wanneer snelheid de absolute prioriteit is.

Redis is meer dan alleen een cache; het is een key-value NoSQL-database met meerdere datastructuren en geïntegreerde tools. De database werd oorspronkelijk gelanceerd in 2009 en is geschreven in C. De naam is afgeleid van Remote Dictionary Server . Tegenwoordig heeft het een zeer actief ecosysteem, clients voor vrijwel elke programmeertaal en robuuste mogelijkheden voor persistentie en replicatie.

Wat is Redis en waarvoor wordt het gebruikt?

Redis is een in-memory opslagengine die werkt met sleutel-waardeparen en geavanceerde structuren. Doordat het in het RAM-geheugen opereert, vermindert het de knelpunten die typisch zijn voor schijftoegang , waardoor het perfect is voor toepassingen waar extreme snelheid vereist is: caches voor zware query's, gebruikerssessies, realtime berichtenverkeer, online gaming, dashboards met streaming data en meer.

In veel projecten wordt het gebruikt als cachelaag vóór traditionele databases , om herhalende resultaten op te slaan en zo continue herberekeningen of heropvragingen te voorkomen. Het wordt ook gebruikt als database op zich wanneer strikte duurzaamheid geen vereiste is of wanneer de persistentie zo is geconfigureerd dat gegevens op schijf worden opgeslagen.

De client/server-architectuur, netwerkinterface en het lichte ontwerp maken het eenvoudig om het systeem te implementeren en er verbinding mee te maken vanaf meerdere hosts. Bovendien biedt het asynchrone master-naar-replica-functionaliteit (de master blijft actief tijdens het repliceren), wat schaalbaarheid van leesbewerkingen bevordert en de beschikbaarheid verbetert.

Belangrijkste functies

De grootste kracht van Redis is dat alles zich in het hoofdgeheugen bevindt. Dit elimineert schijftoegang tijdens kritieke processen en zorgt voor extreem snelle lees- en schrijfbewerkingen . Bovendien kan elke string tot 512 MB groot zijn, met ondersteuning voor binaire data, en omvat het structuren zoals lijsten, sets, gesorteerde sets, hashes, HyperLogLog, bitmaps en streams.

Redis implementeert atomaire bewerkingen op hoog niveau aan de serverzijde op deze structuren. Hierdoor kunt u verenigingen, doorsneden of verschillen uitvoeren op verzamelingen, subtekenreeksen wijzigen of gehele getallen en drijvende-kommagetallen verhogen en verlagen zonder raceomstandigheden.

Het bevat tools die de ontwikkeling versnellen en veelvoorkomende patronen vereenvoudigen: Pub/Sub voor het publiceren van en abonneren op kanalen (ideaal voor realtime berichten en notificaties), sleutels met TTL voor automatische vervaldatum, atomaire tellers voor statistieken en gelijktijdigheidscontrole, en ingebouwde ondersteuning voor Lua-scripts voor serverlogica vanaf versie 2.6.

Een ander groot voordeel is de compatibiliteit met modules. Redis-modules breiden de mogelijkheden uit naar bijvoorbeeld JSON-documenten , tijdreeksen en zoekfuncties , waardoor het een veelzijdig systeem is dat veel verder gaat dan eenvoudige sleutel-waardeparen.

  Hoe automatiseer je workflows met n8n en Docker?

Redis-functies

Geschiedenis, licenties en evolutie

Redis werd in 2009 opgericht door Salvatore Sanfilippo om de latentie van een product genaamd LLOGG te verbeteren. Het succes was onmiddellijk en in 2010 nam VMware Sanfilippo in dienst om het project fulltime te leiden ; Pieter Noordhuis sloot zich kort daarna aan. Tussen 2013 en 2015 werd het project gesponsord door Pivotal en later door Redis Labs.

Sinds versie 2.6 heeft de server een Lua-interpreter geïntegreerd, waardoor scripts direct binnen Redis met atomiciteit kunnen worden uitgevoerd en de round-trip latency tussen client en server tot een minimum wordt beperkt. Wat de licenties betreft, wordt deze gedistribueerd onder een duale RSALv2- en SSPLv1- licentie.

Datamodel en bewerkingen

Redis gebruikt een globaal woordenboek dat sleutels aan waarden koppelt. In tegenstelling tot eenvoudigere sleutel-waarde-oplossingen kunnen waarden van verschillende typen zijn. Het type bepaalt de beschikbare commando's en de atomaire bewerkingen die je op die gegevens kunt uitvoeren.

Het Redis String-type is "binair veilig": het kan tekst, gehele getallen, drijvende-kommagetallen of onbewerkte binaire gegevens bevatten, zoals een JPEG-afbeelding of een geserialiseerd object. Je kunt bewerkingen uitvoeren op delen van de tekenreeks, specifieke bits wijzigen of deze gebruiken als een teller met verhogingen/verlagingen.

Lijsten stellen je in staat om wachtrijen of stapels te beheren, sets en geordende sets worden gebruikt voor lidmaatschap en rangschikking op basis van score, en hashes slaan veld-waardetoewijzingen op, wat erg handig is voor het groeperen van attributen van een object . HyperLogLog wordt gebruikt voor benaderende kardinaliteitstellers met zeer weinig geheugen, en streams faciliteren gebeurtenisstromen met gegroepeerde consumptie.

Bovendien biedt Redis transacties (MULTI/EXEC), waarmee je meerdere bewerkingen kunt groeperen en sequentieel en atomisch kunt uitvoeren . In combinatie met Lua kun je complexe serverlogica op een betrouwbare manier inkapselen.

Persistentie: snapshots en AOF

Redis kan volledig in het geheugen werken, maar ondersteunt ook persistentie op schijf om een ​​balans te vinden tussen prestaties en duurzaamheid. Met snapshots (RDB) maakt het periodieke momentopnamen van de dataset en slaat deze asynchroon op, wat resulteert in een minimale impact op de responstijd.

De andere optie is AOF (journaling), waarbij elke schrijfbewerking naar een bestand wordt vastgelegd. Deze modus biedt een fijnere, meer configureerbare duurzaamheid: `appendfsync=always` forceert synchronisatie bij elke wijziging (maximale beveiliging, lagere prestaties), en `appendfsync=everysec` synchroniseert elke seconde (een goede balans).

Indien nodig kunt u ook handmatig opslaan om direct een momentopname te maken. In geval van een totale computerstoring verliest u doorgaans slechts een kleine hoeveelheid gegevens, afhankelijk van het gekozen synchronisatiebeleid.

In oudere versies was het gebruik van "virtueel geheugen" toegestaan ​​vanaf versie 2.4, maar die aanpak is nu achterhaald. Tegenwoordig wordt aanbevolen te kiezen tussen RDB, AOF of een combinatie van beide , waarbij de configuratie wordt aangepast aan de kritische aard van de gegevens en de gewenste prestaties.

Replicatie en hoge beschikbaarheid

Redis implementeert asynchrone master-replica-replicatie. Dit betekent dat schrijfbewerkingen worden geaccepteerd op de master en dat replica's worden gesynchroniseerd zonder de master te blokkeren, waardoor de service operationeel blijft tijdens synchronisaties . Een master kan meerdere replica's hebben, en omgekeerd kan een replica als master van een andere replica fungeren, waardoor een boomstructuur ontstaat.

  Hoe je wachtrijen in Laravel stap voor stap kunt pauzeren en beheren

Replicatie is erg nuttig voor het schalen van leesbewerkingen en voor redundantie. Sommige configuraties staan ​​schrijven naar replica's toe, hoewel dit tot inconsistenties kan leiden als het niet goed wordt beheerd; standaard worden replica's meestal alleen-lezen gebruikt om consistentie te waarborgen.

Door replica's dicht bij de gebruikers te plaatsen, wordt de waargenomen latentie verminderd. Met behulp van orchestratie- en sentinel-/clustertools kunnen hoge beschikbaarheid en automatische failover worden gerealiseerd om de downtime bij uitval van de master te minimaliseren.

Client/serverarchitectuur en ecosysteem

De Redis-server biedt een eenvoudig protocol waarmee clients van verschillende programmeertalen verbinding kunnen maken. Je kunt de officiële CLI (redis-cli) gebruiken voor testen, beheer of snelle scripting, of een bibliotheek integreren in je applicatie.

Er zijn clients beschikbaar voor ActionScript, C, C++, C#, Java, Go, Python, PHP, Ruby, Scala, JavaScript (inclusief server-side Node.js), R, Erlang, Haskell, Lua, Objective-C, Perl, Common Lisp, Smalltalk, Tcl, Io, haXe, Pure Data en meer. Deze brede ondersteuning maakt het eenvoudig om de software in vrijwel elke technologie-stack te implementeren.

Echte use cases en praktische voorbeelden

Een veelvoorkomend voorbeeld is een online makelaarskantoor: een woningaanbieding met prijs, voorzieningen en aantal kamers verandert nauwelijks. Zonder caching vereist elk bezoek herhaalde query's en berekeningen. Met Redis wordt het object na de eerste keer laden opgeslagen met een sleutel (bijvoorbeeld property_4056 ) en een TTL van bijvoorbeeld één maand. Bij volgende bezoeken wordt de informatie uit het geheugen gelezen en wordt de database niet opnieuw geraadpleegd.

Het is ook gebruikelijk om omvangrijke rapportresultaten in de cache op te slaan , geauthenticeerde sessies te beheren, live ranglijsten op te bouwen met gesorteerde sets, of Pub/Sub te gebruiken als een lichtgewicht berichtenkanaal tussen services.

In een test met een foutentabel van 16.000 rijen werd de tijd gemeten voor: 1) het opvragen van gegevens uit de database, 2) het opslaan van de gegevens in Redis en 3) het lezen uit Redis. Het resultaat was opvallend: het ophalen van gegevens uit Redis was 26 keer sneller dan rechtstreeks uit de database. Dergelijke vergelijkingen laten vaak de daadwerkelijke impact op de gebruikerservaring en de infrastructuurkosten zien.

Redis versus Memcached

Beide technologieën worden gebruikt voor caching in het geheugen, maar er zijn opmerkelijke verschillen. Redis biedt meerdere gegevenstypen (lijsten, sets, hashes, enz.), optionele persistentie op schijf , Pub/Sub, Lua-scripts, transacties en modules om de mogelijkheden uit te breiden. Memcached daarentegen richt zich op een eenvoudig sleutel-waardemodel in het geheugen zonder persistentie.

Qua pure prestaties zijn beide erg snel; Redis blinkt doorgaans uit in scenario's met complexe structuren en atomaire serverbewerkingen. Als je alleen een zeer eenvoudige en ultralichte cache nodig hebt, is Memcached wellicht voldoende , maar als je op zoek bent naar meer functionaliteit en flexibiliteit, is Redis meestal de beste keuze.

  Directeur Informatiesystemen: Sleutel tot Technologisch Succes

Beheerde versus zelfbeheerde services (Redis en Valkey)

Je kunt Redis of Valkey zelf implementeren of kiezen voor een beheerde cloudservice. Zelfbeheer geeft je volledige controle, maar schaalbaarheid en onderhoud zijn jouw verantwoordelijkheid (knooppunten toevoegen, updates, beveiliging, back-ups, monitoring).

Een beheerde service verlaagt de operationele last: eenvoudiger schalen, hoge beschikbaarheid en probleemloze updates. Dit resulteert doorgaans in lagere totale eigendomskosten en stelt het team in staat zich meer te richten op datamodellering en bedrijfsfunctionaliteiten in plaats van platformtaken.

Geïntegreerde tools: Pub/Sub, TTL, tellers en Lua

Met Pub/Sub kun je berichten in kanalen uitzenden en ervoor zorgen dat meerdere abonnees ze direct ontvangen. Dit is perfect voor chats, notificaties en de coördinatie tussen microservices. Het is een eenvoudig en effectief patroon.

Time-to-live (TTL) sleutels zorgen ervoor dat tijdelijke gegevens, zoals sessies, tokens en verlopen queryresultaten, automatisch worden verwijderd. Dit voorkomt dat de database vol raakt met verouderde informatie en vereenvoudigt de logica voor het verlopen van gegevens.

Atomische tellers zijn fantastisch voor statistieken, snelheidsbeperking, wachtrijen of elke situatie waarin je veilig moet optellen/aftrekken in omgevingen met gelijktijdige toegang.

Tot slot maakt de ingebouwde ondersteuning van Lua het mogelijk om scripts atomair dicht bij de data uit te voeren. Dit vermindert het netwerkverkeer en stelt je in staat complexe bewerkingen in één stap uit te voeren , wat de consistentie en prestaties verbetert.

Veel gestelde vragen

Waar wordt Redis voor gebruikt? Om applicaties te versnellen met in-memory caches, sessies, realtime rankings, lichtgewicht berichtenverkeer met Pub/Sub en als NoSQL-database wanneer latentie cruciaal is of persistentie vereist is.

Waarom is Redis zo snel? Omdat de data zich in het RAM-geheugen bevindt, waardoor schijftoegang op het kritieke pad wordt geëlimineerd en atomaire serverbewerkingen mogelijk zijn; bovendien is het protocol lichtgewicht en efficiënt.

Kan het als database worden gebruikt? Ja. Het is een in-memory NoSQL-database met persistentieopties (RDB en AOF). Afhankelijk van uw configuratie kunt u prioriteit geven aan prestaties of duurzaamheid , of een combinatie van beide.

Taalondersteuning

Er zijn volwaardige clients voor vrijwel alles: Python (redis-py), Java (Jedis), Node.js (ioredis), C#/.NET (StackExchange.Redis), PHP (phpredis), Go (go-redis), Ruby (redis-rb) en nog veel meer. Deze diversiteit garandeert een naadloze integratie met uw bestaande stack.

Redis heeft zich gevestigd als de "wildcard" voor het oplossen van prestatie- en realtimeproblemen in de meeste moderne architecturen: het combineert razendsnelle prestaties, rijke datastructuren, configureerbare persistentie, replicatie en een reeks praktische tools die, mits goed gebruikt, een verschil maken in de gebruikerservaring.

Databasetypen
Gerelateerd artikel:
Soorten databases: relationeel, NoSQL en meer