2015-06-09 11 views
6

Przechowuję moje dane w Redis. Przechowuję w jednym wierszu to guid, createday i jego rozmiar.Redis/Uzyskaj wszystkie klucze i wartości od redis z prefiksem

więc zdefiniować następujące:

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") 

życzę, aby wyświetlić wszystkie moje pliki w moim db. Więc próbuję następujących:

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

, ale res jest undefined. Jak mogę to zrobić?

Odpowiedz

7

HGETALL powraca wszystkie pola i wartości hash przechowywane w kluczu, nie można określić maskę: http://redis.io/commands/hgetall

Można zadzwonić KEYS doc:* aby uzyskać listę wszystkich kluczy spełniających podane kryteria, a następnie uzyskać wszystkie wartości w pętla.

Ale proszę przeczytać rozdział na temat potencjalnego przeboju wydajności zanim to zrobisz: http://redis.io/commands/keys

+5

Nie używaj klawiszy na produkcji, to jest zbyt niebezpieczne. Zamiast tego użyj polecenia SKANUJ, filtrujesz Z MECZEM i kursor klawiszem COUNT - to będzie coś w stylu SCAN 0 COUNT 50 MATCH doc: * http://redis.io/commands/scan –

+4

@lcostea: używanie 'KEYS' może lub może nie być niebezpieczne w zależności od konkretnego scenariusza, którego OP nie opisywał. To prawda, że ​​'SCAN' jest bezpieczniejszy pod względem wydajności, ale ponieważ jest to tylko kursor, może nie zwracać wszystkich wpisów ani nie zwracać kilkukrotnych wpisów, więc musi być również używany ostrożnie. –

+1

@LiviuCostea Mówienie, że to niebezpieczne bez podania powodu, nie jest zbyt pomocne. –