2015-06-09 24 views
6

Memorizzo i miei dati in redis. Conservo in una materia prima, guidata, creata e taglia.Redis/Ottieni tutte le chiavi e valori da redis con prefisso

Così ho definire quanto segue:

var dbclient1 = db.createClient(); 
dbclient1.hmset("doc:3743-da23-dcdf-3213", "date", "2015-09-06 00:00:01", "size", "203") 
dbclient1.zadd("cache", 32131, "37463-da23-dcdf-3213") 

Desidero vedere tutti i miei file nel mio db. Così provo il seguente:

dbclient1.hgetall("doc:*", function (err, res){ 
     console.log(err) 
     console.log(res) 
}) 

ma res è undefined. Come posso farlo?

risposta

7

HGETALL restituisce tutti i campi ei valori del hash conservati a chiave, non è possibile specificare una maschera: http://redis.io/commands/hgetall

Si può chiamare KEYS doc:* per ottenere un elenco di tutti i tasti corrispondente ai criteri e quindi ottenere tutti i valori in un ciclo.

Ma si prega di leggere una sezione sul potenziale calo di prestazioni prima di farlo: http://redis.io/commands/keys

+5

Non utilizzare i tasti sulla produzione, è troppo pericoloso. Usa SCAN invece, hai filtrato WITH MATCH e il cursore con COUNT - quindi sarà qualcosa come SCAN 0 COUNT 50 MATCH doc: * http://redis.io/commands/scan –

+4

@lcostea: l'uso di 'KEYS' può o potrebbe non essere pericoloso a seconda di uno scenario particolare che l'OP non ha descritto. Certo, "SCAN" è più sicuro dal punto di vista delle prestazioni, ma poiché è solo un cursore, potrebbe non restituire tutte le voci o restituire più volte alcune voci, quindi deve essere usato con attenzione. –

+1

@LiviuCostea Dire che è pericoloso senza dare una motivazione non è molto utile. –

Problemi correlati