Czy istnieje polecenie Redis do pobierania wszystkich kluczy z bazy danych? Widziałem niektóre biblioteki python-redis, które je pobierają. Zastanawiałem się jednak, czy jest to możliwe z poziomu klienta redis.
redis
redis-cli
redis-commands
Lalith
źródło
źródło
redis-cli keys "*"
KEYS
może on blokować serwer na dłużej podczas odpytywania dużego zestawu danychZaktualizowano dla Redis 2.8 i nowszych
Jak zauważono w komentarzach do poprzednich odpowiedzi na to pytanie,
KEYS
jest to potencjalnie niebezpieczne polecenie, ponieważ Twój serwer Redis nie będzie mógł wykonywać innych operacji, dopóki go obsłuży. Innym ryzykiemKEYS
jest to, że może on zużyć (w zależności od wielkości twojej przestrzeni kluczowej) dużo pamięci RAM do przygotowania bufora odpowiedzi, co może prawdopodobnie wyczerpać pamięć serwera.Wersja 2.8 Redis wprowadziła rodzinę poleceń SCAN , które są o wiele bardziej uprzejme i mogą być używane w tym samym celu.
Interfejs CLI zapewnia również dobry sposób pracy z nim:
źródło
Może się zdarzyć, że używając redis-cli, połączysz się ze swoim zdalnym serwerem redis, a następnie polecenie:
nic nie pokazuje lub lepiej, pokazuje:
(empty list or set)
Jeśli masz absolutną pewność, że serwer Redis, którego używasz, to ten, na którym masz dane, być może twój redis-cli nie łączy się z prawidłową instancją bazy danych Redis.
Jak wspomniano w dokumentach Redis, nowe połączenia domyślnie łączą się z db 0 .
W moim przypadku
KEYS
polecenie nie pobierało wyników, ponieważ moja baza danych miała wartość 1. Aby wybrać żądaną bazę danych, użyj WYBIERZ .Db jest identyfikowany przez liczbę całkowitą.
Publikuję te informacje, ponieważ żadna z poprzednich odpowiedzi nie rozwiązała mojego problemu.
źródło
-> Zdobądź wszystkie klucze z redis-cli
-> Uzyskaj listę wzorów
Spowoduje to wygenerowanie kluczy rozpoczynających się od „d” z trzema znakami.
Otrzymasz klucze z dopasowanym znakiem „t” w kluczu
-> Policz klucze z linii poleceń według
-> Lub możesz użyć
dbsize
źródło
key *t*
siękeys *t*
.Spójrz na poniższy ściągawki Redis . Aby uzyskać podzbiór kluczy redis za pomocą redis-cli, używam polecenia
źródło
Tak, możesz uzyskać wszystkie klucze za pomocą tego
źródło
SKANOWANIE nie wymaga od klienta ładowania wszystkich kluczy do pamięci, tak jak robi to KLUCZ. SCAN daje iterator, którego możesz użyć. Miałem rekordy 1B w mojej redis i nigdy nie mogłem uzyskać wystarczającej ilości pamięci, aby zwrócić wszystkie klucze naraz.
Oto fragment kodu python, aby pobrać wszystkie klucze ze sklepu pasujące do wzorca i usunąć je:
źródło
gdzie * to wzorzec listy wszystkich klawiszy
źródło
redis-cli -h <host> -p <port> keys '*'
Wzór KLUCZY
Zwraca wszystkie klucze pasujące do wzorca.
Ostrzeżenie: Nie zaleca się używania tego polecenia, ponieważ może to zepsuć wydajność, gdy jest wykonywane na dużych bazach danych zamiast KLUCZY, których można użyć SKANOWANIA lub ZESTAWÓW .
Przykład użycia polecenia KLUCZE:
źródło
Jeśli Twoje redis jest klastrem, możesz użyć tego skryptu
źródło
Zdobądź wszystkie klucze w Redis
Zdobądź wszystkie klucze, używając opcji --scan:
Wyświetl wszystkie klucze za pomocą polecenia KLUCZE:
źródło
Aby uzyskać wszystkie klucze dostępne na serwerze redis, należy otworzyć redis-cli i wpisać:
KEYS *
Aby uzyskać dodatkową pomoc, odwiedź tę stronę: Ten linkźródło
Powinniśmy używać --scan --pattern z redis 2.8 i nowszymi.
Możesz spróbować użyć tego opakowania na redis-cli. https://github.com/VijayantSoni/redis-helper
źródło
Jeśli używasz Laravel Framework, możesz po prostu użyć tego:
W Core PHP:
źródło
Możesz po prostu połączyć się z serwerem redis za pomocą redis-cli, wybrać bazę danych i wpisać KLUCZE *, pamiętaj, że da ci wszystkie klucze obecne w wybranej bazie danych redis.
źródło