Jak mogę znaleźć kluczy pasujących do wzorca takiego:Redis: Znajdź klucze pasujące do wzorca
np
Mam kilka klawiszy:
abc:parent1
abc:parent2
abc:parent1:child1
abc:parent2:child2
Jak mogę znaleźć tylko
abc:parent1
abc:parent2
Jak mogę znaleźć kluczy pasujących do wzorca takiego:Redis: Znajdź klucze pasujące do wzorca
np
Mam kilka klawiszy:
abc:parent1
abc:parent2
abc:parent1:child1
abc:parent2:child2
Jak mogę znaleźć tylko
abc:parent1
abc:parent2
Klucze są oznaczone jako polecenia, których nie należy uruchamiać w produkcji ze względu na sposób ich działania. To, czego potrzebujesz, to stworzyć indeks swoich kluczy. Użyj set
do przechowywania nazw klawiszy pożądanego wzoru. Po dodaniu nowego klucza my dodajemy jego nazwę do zestawu. Na przykład:
Set abc:parent1:child1 breakfast
Sadd abc:parent1:index abc:parent1
Wtedy kiedy trzeba listę:
Smembers abc:parent1
daje listę, bez kar i problemów związanych z użyciem polecenia „zło” Keys. Dodatkowo usuniesz wpis z sremove
po usunięciu klucza. Otrzymujesz również jako korzyść możliwość sprawdzenia, ile kluczy znajduje się w indeksie za pomocą jednego połączenia.
Jeśli absolutnie, pozytywnie, MUSISZ unikać używania indeksu zamiast klawiszy za pomocą SCAN
.Jedyny moment, w którym powinieneś rozważyć klucze, to jeśli korzystasz z narzędzia do debugowania, w którym jedynym procesem używającym go jest proces debugowania.
poleceń KEYS wzór pomogą ci za to samo.
ex:
redis> MSET one 1 two 2 three 3 four 4
OK
redis> KEYS *o*
1) "two"
2) "one"
3) "four"
dla konkretnego przykładu, polecenie poniżej będzie działać:
redis 127.0.0.1:6379> keys *parent[0-9]
1) "abc:parent2"
2) "abc:parent1"
Oto the detailed description of the command.
Aktualizacja: Choć powyższa sugestia pomaga uzyskać pożądany wynik, z Redis klawisze komend jest zła jak inni wspomniano. KEY blokuje i może zużywać dużo pamięci RAM podczas przygotowywania odpowiedzi.
Nie używaj klawiszy w zwykłym kodzie aplikacji. Jeśli szukasz sposobu na znalezienie kluczy w podzbiorze klucza, rozważ użycie opcji SKANOWANIE lub zestawy.
Dzięki Real Bill i Itamar, mam lepsze zrozumienie.
'KLUCZE' jest złe ... –
Jak zrobić z 'zezwoleniami:/url1/id/sub: write' oraz' permission:/url1/id: write', aby dopasować tylko 'permission:/url1/[^/] + ' – Natim
Nie do końca rozumiem, jak to działa. W twoim przykładzie powinno to być w rzeczywistości: 'set abc: parent1: child1 breakfast', a następnie' sadd abc: parent1 child1'? – Automatico
Nie, ponieważ OP chciał tylko poziom parent1, a nie child. –
Źle zrozumiałem pytanie, dzięki za wyjaśnienie. – Automatico