- De meeste (maar niet alle) objecten gebruiken een sleutel
- Naamruimten gebruiken
- Alle bestaande sleutels ophalen
Net als andere niet-relationele database-engines, kan het soms moeilijk zijn om je gedachten te wikkelen over hoe Redis omgaat met datastructuren en associaties. Dit is met name het geval wanneer Redis wordt vergeleken met meer traditionele relationele databases met in quarantaine geplaatste tabellen, die elk meerdere rijen en kolommen bevatten om gegevens op te slaan.
Aangezien Redis niet-relationeel is, is alles in het systeem geconfigureerd met basis key/value
paren op het eenvoudigste niveau. Met name tijdens de ontwikkeling kan het lastig zijn om alles bij te houden wat al in de database bestaat, dus in deze korte tutorial behandelen we de methode voor het ophalen van alle keys
uit een Redis-database met enkele eenvoudige commando's.
De meeste (maar niet alle) objecten gebruiken een sleutel
Voor het overgrote deel van de gegevensopslag met Redis worden gegevens opgeslagen in een eenvoudige key/value
paar. Dit wordt het best weergegeven via de redis-cli
(opdrachtregelinterface) met behulp van GET
en SET
commando's.
We willen bijvoorbeeld wat informatie over books
opslaan , zoals de title
en author
van een paar van onze favorieten.
> SET title "The Hobbit"
OK
> SET author "J.R.R. Tolkien"
OK
De title
en author
zijn de keys
we hebben ingesteld en de werkelijke tekenreekswaarden zijn daarna gespecificeerd. Dus we kunnen ze bekijken met GET
, zoals zo:
> GET title
"The Hobbit"
> GET author
"J.R.R. Tolkien"
Naamruimten gebruiken
Dat is allemaal goed en wel, maar hoe voegen we nog een boek toe? We kunnen dezelfde title
niet hergebruiken en author
sleutels of we overschrijven de bestaande gegevens. In plaats daarvan kunnen we de syntaxis van de naamruimte gebruiken met een :
scheidingsteken en het geven van elke title
of author
voer een unieke numerieke key
in :
> SET title:1 "The Hobbit"
OK
> SET author:1 "J.R.R. Tolkien"
OK
> SET title:2 "The Silmarillion"
OK
> SET author:2 "The Silmarillion"
OK
Gebruikt nu GET
vereist het toevoegen van de unieke numerieke key
ook:
> GET title:1
"The Hobbit"
> GET title:2
"The Silmarillion"
Alle bestaande sleutels ophalen
Het blijkt dat elke SET
opdracht die we hierboven hebben gegeven, creëerde een nieuwe, unieke key
binnen onze Redis-database. Om een lijst te krijgen van alle huidige keys
die er zijn, gebruik gewoon de KEYS
commando:
> KEYS *
1) "title:1"
2) "title:2"
3) "title"
4) "author:2"
5) "author"
6) "author:1"
Door KEYS
te volgen met een asterisk (*
) - die fungeert als een zoekopdracht met jokertekens - we vragen Redis om alle sleutels in het systeem op te halen. We zien dus niet alleen onze twee originele title
en author
toetsen, maar ook de vier opgesomde versies die volgden.
De syntaxis die volgt op KEYS
kan worden gebruikt om naar specifieke woorden of woordgroepen binnen de sleutel te zoeken, of ook naar de exacte overeenkomst. Hier willen we alle sleutels die de tekst 'title'
. bevatten :
> KEYS *title*
1) "title:1"
2) "title:2"
3) "title"
VOORZICHTIG:Zoals vermeld in de officiële documentatie, is het raadzaam om het gebruik van de KEYS
te vermijden. commando op zeer grote databases, maar gebruik het vooral niet in een productieomgeving. Sinds KEYS
mogelijk elke sleutel in het systeem retourneert, kan dit een dramatisch negatief effect hebben op de prestaties.