2015-06-09 105 views
6

我將數據存儲在redis中。我存儲在一個原始的GUID,創建和它的大小。Redis /從redis獲取所有密鑰和值,前綴爲

所以我定義如下:

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

我想查看我的分貝我的所有文件。所以我嘗試以下內容:

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

但res是undefined。我該怎麼做?

回答

7

HGETALL返回所有領域,並儲存在關鍵的哈希值,你不能指定一個面具:http://redis.io/commands/hgetall

您可以撥打KEYS doc:*讓所有鍵的列表符合您的條件,然後得到的所有值一個循環。

但請繼續閱讀潛在的性能命中一節你這樣做之前:http://redis.io/commands/keys

+5

不要在生產中使用的密鑰,實在是太危險。使用SCAN代替,你可以使用COUNT過濾WITH MATCH和光標 - 所以它會像SCAN 0 COUNT 50 MATCH doc:* http://redis.io/commands/scan –

+4

@lcostea:使用'KEYS'可能或可能根據OP沒有描述的特定情況,不會有危險。當然,'SCAN'在性能上更安全,但由於它只是一個遊標,它可能不會返回所有條目或多次返回一些條目,所以必須謹慎使用。 –

+1

@LiviuCostea說出沒有理由的危險並不是很有幫助。 –