如何查找Redis中的数据库数量(NodeJS)

所以我正在写一个从redis读取的节点应用程序,我想做一个返回数据库数量的任何人都知道该怎么做的查询。

所以现在基本上我有一个方法来获得数据库中的所有密钥,但我希望级别更高,我想遍历所有数据库,然后获得所有的密钥。 这是获取当前DB的所有密钥的代码。

const client = redis.createClient({host: "127.0.0.1", port: 6379}); client.multi() .keys('*', function (err, replies) { console.log("MULTI got " + replies.length + " replies"); let dbs = [replies]; let dbData = {}; replies.forEach(function (reply, index) { client.get(reply, function (err, data) { console.log(reply + " " +data); }); }); }) .exec(function (err, replies) { }); 

解决scheme1

正如@carebdayrvis提到的,你可以使用INFO命令来获取数据库信息,并parsing信息来获取数据库的数量。

这个解决scheme有两个问题:

  1. 它只返回非空数据库的信息。 它不会显示数据库的总数。
  2. 如果信息文本的格式发生变化,则必须重写parsing代码。

解决scheme2

调用CONFIG GET DATABASES来获取数据库的总数。 这个结果包括空的和非空的数据库。 您可以使用SELECT db-indexDBSIZE命令来确定哪些数据库不是空的。

这个解决scheme的优点是它更可编程。

其他的东西

顺便说一句, KEYS 不能用于生产环境,可能会阻塞Redis很长一段时间。 您应该考虑使用SCAN命令。

这个redis命令的输出包含了这些信息。 你应该可以从节点客户端调用它。