当前位置: 首页 > 面试题库 >

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

白芷阳
2023-03-14
问题内容

因此,我正在编写一个从redis读取的节点应用程序,我想执行某种查询,该查询返回有人知道怎么做的数据库数量。

因此,现在基本上我所拥有的是一种获取数据库中所有密钥的方法,但是我希望级别更高,我想遍历所有数据库然后获取所有密钥。这是用于获取当前数据库的所有密钥的代码。

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) { });

问题答案:

解决方案1

正如@carebdayrvis所提到的,您可以使用INFOcommand获取数据库信息,并解析该信息以获取数据库的数量。

此解决方案有两个问题:

  1. 它仅返回不为空的数据库的信息。它不会显示数据库的总数。
  2. 如果信息文本的格式更改,则必须重写分析代码。

解决方案2

调用CONFIG GET DATABASES以获取数据库总数。此结果包括空数据库和非空数据库。您可以使用SELECT db- indexDBSIZE命令找出哪些数据库不为空。

该解决方案的优势在于它更具可编程性。

其他的东西

顺便说一句,KEYS 不应 在生产环境中使用它,它可能会长时间阻止Redis。您应该考虑SCAN改为使用命令。



 类似资料:
  • 问题内容: 我是一个redis初学者。我正在学习将其用于在轨道上的红宝石。 Redis支持很多分贝(最多可以支持30个)。正常访问我运行的客户端Redis控制台 在终端。默认情况下,它会自动进入db0。如果它有多个db,则可以使用命令选择要访问的db。 但是我不知道创建一个数据库使用的任何方法。 你能帮助我吗。非常感谢。! 问题答案: 无需在Redis中创建一个数据库,只需使用它即可。您还可以通过

  • 问题内容: 我有一个特定的字符串,例如“ 123abcd”,但我不知道表的名称,甚至不知道SQL Server数据库中表内的列的名称。我想通过选择找到它并显示相关字符串的所有列,所以我想知道以下内容: 出于显而易见的原因,它不起作用,但是有一种简单的方法可以创建一个select语句来执行类似的操作? 问题答案: 这将起作用: 不过,有几点警告。首先, 这是极其缓慢且未优化的 。所有值都将被简单地转

  • 我有一个连接到Sybase ASE的PB应用程序;有没有一种方法可以在应用程序运行时跟踪DB调用。我以前在Oracle10/11G中经常这样做,但在sybase ase中无法理解。如果我能在PB应用程序中运行一个模块并检查之后执行的查询,那将非常有帮助。我使用的是DBVisualizer或RapidSQL。

  • 问题内容: 有没有一种方法可以使用Redis刷新Redis数据库? 我正在寻找类似或 问题答案: Redis-py实际上具有以下功能:

  • Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 目录结构CentOS /etc/redis.conf: 配置文件,用来配置 Redis 端口、数据存储、以及优化参数 /etc/redis-sentinel.conf: 哨兵配置文件,用来

  • 问题内容: 我是Redis的新手,但是有一个与备份有关的问题。 现在,我有一个实例在Windows服务器上运行。在此实例内部,我目前有一个“作业”,可将数据存储在一个数据库中。我不希望备份这些数据。 我必须创造一份新工作。我的第一个想法是将数据存储在另一个数据库中,但是在同一实例上。然后,我将在此数据库ID上激活RDB备份。 但是,当我阅读redis文档时,会看到以下命令进行备份: 此命令仅备份当