Redis /从redis获取带有前缀的所有键和值

MID*_*E11 16 redis

我将数据存储在redis中.我存储了一个原始的guid,createday和它的大小.

所以我定义了以下内容:

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")
Run Code Online (Sandbox Code Playgroud)

我希望在我的数据库中查看我的所有文件.所以我尝试以下方法:

dbclient1.hgetall("doc:*", function (err, res){
        console.log(err)
        console.log(res)
})
Run Code Online (Sandbox Code Playgroud)

但res是undefined.我该怎么做?

Igo*_*hov 27

HGETALL返回存储在key中的哈希的所有字段和值,您不能指定掩码:http://redis.io/commands/hgetall

您可以调用KEYS doc:*以获取符合条件的所有键的列表,然后循环获取所有值.

但请在阅读之前阅读有关潜在性能影响的部分:http://redis.io/commands/keys

  • 不要在生产中使用KEYS,这太危险了.使用SCAN代替,你已经过滤了WITH MATCH和光标与COUNT - 所以它会像SCAN 0 COUNT 50 MATCH doc:*http://redis.io/commands/scan (12认同)
  • 也许这部分是新的。https://redis.io/commands/keys 说:“在入门级笔记本电脑上运行的 Redis 可以在 40 毫秒内扫描 100 万个密钥数据库。” ——这意味着性能损失可能不是问题,具体取决于您的应用程序。 (6认同)
  • @LiviuCostea说没有理由这很危险并不是很有帮助. (5认同)
  • @StevenWade阅读文档:http://redis.io/commands/keys那里有一个警告 (5认同)
  • @lcostea:根据OP没有描述的特定情况,使用`KEYS`可能会也可能不会很危险.当然,`SCAN`在性能方面更安全,但由于它只是一个游标,它可能不会返回所有条目或多次返回一些条目,因此也必须小心使用. (4认同)