sql >> Databasteknik >  >> NoSQL >> Redis

Hur man får alla nycklar i Redis

  • De flesta (men inte alla) objekt använder en nyckel
    • Använda namnområden
  • Hämtar alla befintliga nycklar

Precis som andra icke-relationella databasmotorer, kan det ibland vara svårt att lägga sig kring hur Redis hanterar datastrukturer och associationer. Detta är särskilt sant när Redis jämförs med en mer traditionell relationsdatabaser med tabeller i karantän, som var och en innehåller flera rader och kolumner för att lagra data.

Eftersom Redis är icke-relationellt är allt i systemet konfigurerat med grundläggande key/value par på den enklaste nivån. Särskilt under utveckling kan det vara knepigt att hålla reda på allt som redan finns i databasen, så i denna korta handledning tar vi upp metoden för att hämta alla keys från en Redis-databas med några enkla kommandon.

De flesta (men inte alla) objekt använder en nyckel

För den stora majoriteten av datalagring med Redis kommer data att lagras i en enkel key/value par. Detta visas bäst genom redis-cli (kommandoradsgränssnitt) med GET och SET kommandon.

Till exempel kan vi vilja lagra viss information om books , till exempel title och author av några av våra favoriter.

> SET title "The Hobbit"
OK
> SET author "J.R.R. Tolkien"
OK

title och author är keys vi har ställt in och de faktiska strängvärdena specificerades efter. Så vi kan se dem med GET , som så:

> GET title
"The Hobbit"
> GET author
"J.R.R. Tolkien"

Använda namnutrymmen

Det är väl och bra, men hur lägger vi till en till bok? Vi kan inte återanvända samma title och author nycklar eller så skriver vi över befintlig data. Istället kan vi använda namnutrymmessyntax genom att använda en : separator och ger varje title eller author ange en unik numerisk key :

> 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

Använder nu GET kräver att du lägger till den unika numeriska key likaså:

> GET title:1
"The Hobbit"
> GET title:2
"The Silmarillion"

Hämta alla befintliga nycklar

Som det visar sig, varje SET kommandot vi utfärdade ovan skapade en ny, unik key i vår Redis-databas. För att få en lista över alla nuvarande keys som finns, använd bara KEYS kommando:

> KEYS *
1) "title:1"
2) "title:2"
3) "title"
4) "author:2"
5) "author"
6) "author:1"

Genom att följa KEYS med en asterisk (* ) – som fungerar som en jokerteckensökning – vi ber Redis att hämta alla nycklar i systemet. Således ser vi inte bara våra två ursprungliga title och author nycklar men också de fyra uppräknade versionerna som följde också.

Syntaxen efter KEYS kan användas för att söka efter specifika ord eller fraser inom nyckeln, eller den exakta matchningen också. Här vill vi ha alla nycklar som innehåller texten 'title' :

> KEYS *title*
1) "title:1"
2) "title:2"
3) "title"

VARNING:Som nämnts i den officiella dokumentationen är det tillrådligt att undvika att använda KEYS kommandot på mycket stora databaser, men undvik särskilt att använda det i en produktionsmiljö. Sedan KEYS returnerar potentiellt alla nycklar i systemet, kan detta ha en dramatisk negativ inverkan på prestandan.


  1. Skicka meddelanden till grupper i Django Channels 2

  2. Finns det något alternativ för att begränsa användningen av mongodb-minne?

  3. Det gick inte att starta redis.service:Enheten redis-server.service är maskerad

  4. Mongo Aggregation:$group och $project array för att invända för räkningar