2015-06-09 76 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说出没有理由的危险并不是很有帮助。 –