Risposte:
Prova a guardare il KEYS
comando. KEYS *
elencherà tutti i tasti memorizzati in redis.
MODIFICA: notare l'avvertenza nella parte superiore della KEYS
pagina della documentazione:
Complessità temporale: O (N) con N pari al numero di chiavi nel database, presupponendo che i nomi delle chiavi nel database e il modello specificato abbiano una lunghezza limitata.
AGGIORNAMENTO (V2.8 o superiore): SCAN
è un'alternativa superiore a KEYS
, nel senso che non blocca il server né consuma risorse significative. Preferisco usarlo.
KEYS
ha il potenziale di bloccare il server più a lungo quando si esegue una query su un set di dati di grandi dimensioni
Aggiornato per Redis 2.8 e versioni successive
Come notato nei commenti delle risposte precedenti a questa domanda, KEYS
è un comando potenzialmente pericoloso poiché il server Redis non sarà disponibile per eseguire altre operazioni mentre lo serve. Un altro rischio KEYS
è che può consumare (a seconda delle dimensioni del proprio spazio chiavi) molta RAM per preparare il buffer di risposta, esaurendo quindi la memoria del server.
La versione 2.8 di Redis aveva introdotto la famiglia di comandi SCAN che sono molto più educati e possono essere usati per lo stesso scopo.
L'interfaccia della riga di comando fornisce anche un modo semplice di lavorare con esso:
$ redis-cli --scan --pattern '*'
Può succedere che usando redis-cli ci si connetta al proprio redis-server remoto e quindi il comando:
KEYS *
non mostra nulla, o meglio, mostra:
(empty list or set)
Se sei assolutamente sicuro che il server Redis che usi è quello in cui hai i dati, forse il tuo redis-cli non si connette all'istanza corretta del database Redis.
Come menzionato nei documenti Redis, le nuove connessioni si connettono come impostazione predefinita al db 0 .
Nel mio caso il KEYS
comando non stava recuperando i risultati perché il mio database era 1. Per selezionare il db desiderato, utilizzare SELEZIONA .
Il db è identificato da un numero intero.
SELECT 1
KEYS *
Pubblico queste informazioni perché nessuna delle risposte precedenti stava risolvendo il mio problema.
-> Ottieni tutte le chiavi da redis-cli
-redis 127.0.0.1:6379> keys *
-> Ottieni l'elenco dei modelli
-redis 127.0.0.1:6379> keys d??
Questo produrrà i tasti che iniziano con 'd' con tre caratteri.
-redis 127.0.0.1:6379> keys *t*
Questo otterrà le chiavi con il carattere "t" corrispondente nella chiave
-> Contare i tasti dalla riga di comando da
-redis-cli keys * |wc -l
-> Oppure puoi usare dbsize
-redis-cli dbsize
key *t*
a keys *t*
.
Dai un'occhiata al seguente Redis Cheat Sheet . Per ottenere un sottoinsieme di chiavi redis con il redis-cli uso il comando
KEYS "prefix:*"
Sì, puoi ottenere tutte le chiavi usando questo
var redis = require('redis');
redisClient = redis.createClient(redis.port, redis.host);
redisClient.keys('*example*', function (err, keys) {
})
SCAN non richiede al client di caricare tutte le chiavi in memoria come fa KEYS. SCAN ti offre un iteratore che puoi usare. Avevo un record da 1B nel mio redis e non riuscivo mai a ottenere abbastanza memoria per restituire tutte le chiavi contemporaneamente.
Ecco uno snippet di pitone per ottenere tutte le chiavi dal negozio corrispondenti a un modello ed eliminarle:
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
for key in r.scan_iter("key_pattern*"):
print key
redis-cli -h <host> -p <port> keys *
dove * è il modello per elencare tutti i tasti
redis-cli -h <host> -p <port> keys '*'
Modello CHIAVI
Disponibile dalla 1.0.0.
Complessità temporale: O (N) con N come numero di chiavi nel database, supponendo che i nomi delle chiavi nel database e il modello dato abbiano una lunghezza limitata.
Restituisce tutti i tasti corrispondenti al modello.
Avviso: non è consigliabile utilizzare questo comando poiché potrebbe compromettere le prestazioni quando viene eseguito su database di grandi dimensioni anziché KEYS che è possibile utilizzare SCAN o SET .
Esempio di comando KEYS da usare:
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"
Se il tuo redis è un cluster, puoi usare questo script
#!/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"
Per ottenere tutte le chiavi disponibili nel server redis, è necessario aprire redis-cli e digitare:
KEYS *
Per ottenere ulteriore assistenza, visitare questa pagina:
Questo collegamento
Dovremmo usare --scan --pattern con redis 2.8 e versioni successive.
Puoi provare a usare questo wrapper su redis-cli. https://github.com/VijayantSoni/redis-helper
Se stai usando Laravel Framework, puoi semplicemente usare questo:
$allKeyList = Redis::KEYS("*");
print_r($allKeyList);
Nel core PHP:
$redis = new Redis();
$redis->connect('hostname', 6379);
$allKeyList = $redis->keys('*');
print_r($allKeyList);
Puoi semplicemente collegarti al tuo server redis usando redis-cli, selezionare il tuo database e digitare KEYS *, ricorda che ti darà tutte le chiavi presenti nel database redis selezionato.
redis-cli keys "*"