Odpowiedzi:
Spróbuj spojrzeć na KEYS
polecenie. KEYS *
wyświetli listę wszystkich kluczy przechowywanych w Redis.
EDYCJA: zwróć uwagę na ostrzeżenie u góry KEYS
strony dokumentacji:
Złożoność czasu: O (N), gdzie N jest liczbą kluczy w bazie danych, przy założeniu, że nazwy kluczy w bazie danych i podany wzorzec mają ograniczoną długość.
AKTUALIZACJA (wersja 2.8 lub nowsza): SCAN
jest lepszą alternatywą KEYS
w tym sensie, że nie blokuje serwera ani nie zużywa znacznych zasobów. Wolę z niego korzystać.
KEYS
może on blokować serwer na dłużej podczas odpytywania dużego zestawu danych
Zaktualizowano 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 ryzykiem KEYS
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:
$ redis-cli --scan --pattern '*'
Może się zdarzyć, że używając redis-cli, połączysz się ze swoim zdalnym serwerem redis, a następnie polecenie:
KEYS *
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ą.
SELECT 1
KEYS *
Publikuję te informacje, ponieważ żadna z poprzednich odpowiedzi nie rozwiązała mojego problemu.
-> Zdobądź wszystkie klucze z redis-cli
-redis 127.0.0.1:6379> keys *
-> Uzyskaj listę wzorów
-redis 127.0.0.1:6379> keys d??
Spowoduje to wygenerowanie kluczy rozpoczynających się od „d” z trzema znakami.
-redis 127.0.0.1:6379> keys *t*
Otrzymasz klucze z dopasowanym znakiem „t” w kluczu
-> Policz klucze z linii poleceń według
-redis-cli keys * |wc -l
-> Lub możesz użyć dbsize
-redis-cli dbsize
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
KEYS "prefix:*"
Tak, możesz uzyskać wszystkie klucze za pomocą tego
var redis = require('redis');
redisClient = redis.createClient(redis.port, redis.host);
redisClient.keys('*example*', function (err, keys) {
})
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:
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
for key in r.scan_iter("key_pattern*"):
print key
Wzór KLUCZY
Dostępne od 1.0.0.
Złożoność czasu: O (N), gdzie N jest liczbą kluczy w bazie danych, przy założeniu, że nazwy kluczy w bazie danych i podany wzorzec mają ograniczoną długość.
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:
redis> MSET firstname Jack lastname Stuntman age 35
"OK"
redis> KEYS *name*
1) "lastname"
2) "firstname"
redis> KEYS a??
1) "age"
redis> KEYS *
1) "lastname"
2) "age"
3) "firstname"
Jeśli Twoje redis jest klastrem, możesz użyć tego skryptu
#!/usr/bin/env bash
redis_list=("172.23.3.19:7001,172.23.3.19:7002,172.23.3.19:7003,172.23.3.19:7004,172.23.3.19:7005,172.23.3.19:7006")
arr=($(echo "$redis_list" | tr ',' '\n'))
for info in ${arr[@]}; do
echo "start :${info}"
redis_info=($(echo "$info" | tr ':' '\n'))
ip=${redis_info[0]}
port=${redis_info[1]}
echo "ip="${ip}",port="${port}
redis-cli -c -h $ip -p $port set laker$port '湖人总冠军'
redis-cli -c -h $ip -p $port keys \*
done
echo "end"
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
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
Jeśli używasz Laravel Framework, możesz po prostu użyć tego:
$allKeyList = Redis::KEYS("*");
print_r($allKeyList);
W Core PHP:
$redis = new Redis();
$redis->connect('hostname', 6379);
$allKeyList = $redis->keys('*');
print_r($allKeyList);
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.
redis-cli keys "*"