Získání klíčů Redis databáze

Pro získání klíčů v rámci Redisu při použítí redis-cli existuje příkaz KEYS pattern. Pokud chcete všechny klíče použijete KEYS *, pokud pouze klíče začínající na ‚my‘ použijete KEYS my*. Typ hodnoty klíče zjistíte příkazem TYPE nazev-klice.

Dokumentace nedoporučuje používat KEYS v produkční databázi nebo u velkých databází, neboť KEYS vrací všechny klíče a to může mít vliv na výkonnost. Místo KEYS se doporučuje použití SCAN. Scan vrací na každý dotaz jen omezené množství záznamů a požaduje cursor (ukazatel). V rámci odpovědi vrací nalezené klíče a další ukazatel. Dokud není vrácený ukazatel rovný 0, stále existují klíče, které ještě nebyly vráceny. Výchozí nastavení pro scan vrací 10 záznamů. To možné změnit volbou COUNT.

Příklad:

# Zvolil jsem databázi 2. Mám nastaven port 6378 místo výchozího 6379.
127.0.0.1:6378> select 2
OK

# Zkontroloval jsem, že zde nejsou žádné klíče.
127.0.0.1:6378[2]> keys *
(empty list or set)

# Vložil jsem 4 klíče.
127.0.0.1:6378[2]> set a "A"
OK
127.0.0.1:6378[2]> set b "B"
OK
127.0.0.1:6378[2]> set c "C"
OK
127.0.0.1:6378[2]> set d "D"
OK

# Získání klíčů. Scan vrací defaultně 10 záznamů, takže nyní vrátil všechny. Vrácený kurzor je 0.
127.0.0.1:6378[2]> scan 0
1) "0"
2) 1) "c"
   2) "a"
   3) "d"
   4) "b"

# Vložení dalších 5 záznamů.
127.0.0.1:6378[2]> set e "E"
OK
127.0.0.1:6378[2]> set f "F"
OK
127.0.0.1:6378[2]> set g "G"
OK
127.0.0.1:6378[2]> set h "H"
OK
127.0.0.1:6378[2]> set i "I"

# Získání klíčů.
127.0.0.1:6378[2]> scan 0
1) "0"
2) 1) "g"
   2) "e"
   3) "f"
   4) "a"
   5) "i"
   6) "c"
   7) "h"
   8) "b"
   9) "d"

# Vložení 10 hodnoty.
127.0.0.1:6378[2]> set j "J"
OK

# Scan nyní vrátí jiný kurzor než 0.
127.0.0.1:6378[2]> scan 0
1) "7"
2) 1) "g"
   2) "j"
   3) "e"
   4) "f"
   5) "a"
   6) "i"
   7) "c"
   8) "h"
   9) "b"
   10) "d"

# Použití vráceného kurzoru. Žádný další záznam již není.
127.0.0.1:6378[2]> scan 7
1) "0"
2) (empty list or set)

# Vložení dalšího klíče.
127.0.0.1:6378[2]> set k "K"
OK

# Scan vrátí jiný kurzor než 0.
127.0.0.1:6378[2]> scan 0
1) "11"
2) 1) "g"
   2) "j"
   3) "e"
   4) "f"
   5) "k"
   6) "a"
   7) "i"
   8) "c"
   9) "h"
   10) "b"

# Použití vráceného kurzoru. Dostanu poslední chybějící klíč.
127.0.0.1:6378[2]> scan 11
1) "0"
2) 1) "d"

# Nastavení počtu vracených záznamů pro scan.
127.0.0.1:6378[2]> scan 0 count 5
1) "6"
2) 1) "g"
   2) "j"
   3) "e"
   4) "f"
   5) "k"

# Přidání dalších klíčů
127.0.0.1:6378[2]> set aa "AA"
OK
127.0.0.1:6378[2]> set ab "AB"
OK
127.0.0.1:6378[2]> set aaa "AAA"
OK
127.0.0.1:6378[2]> scan 0 count 100
1) "0"
2)  1) "g"
    2) "j"
    3) "e"
    4) "f"
    5) "k"
    6) "aaa"
    7) "a"
    8) "i"
    9) "aa"
   10) "c"
   11) "ab"
   12) "h"
   13) "b"
   14) "d"

# Použití patternu pro vrácení jen některých z nich
127.0.0.1:6378[2]> scan 0 match a*
1) "5"
2) 1) "aaa"
   2) "a"
   3) "aa"
127.0.0.1:6378[2]> scan 5 match a*
1) "0"
2) 1) "ab"

Zdroj: https://redis.io/commands/scan

Napsat komentář