Node.js 具有匹配模式的ioredis密钥

Node.js 具有匹配模式的ioredis密钥,node.js,express,redis,ioredis,Node.js,Express,Redis,Ioredis,我想用密钥匹配模式“LOGIN::”搜索redis数据库。我正在应用程序中使用ioredis。昨天,我搜索了整个网站,我得到了如下几个选项: 钥匙 扫描流 问题: import Redis from 'ioredis' var Client = new Redis() Client.scanStream <---- Missing 从“ioredis”导入Redis var Client=new Redis() Client.scanStream为您提供了一个示例 const str

我想用密钥匹配模式“LOGIN::”搜索redis数据库。我正在应用程序中使用ioredis。昨天,我搜索了整个网站,我得到了如下几个选项:

钥匙

扫描流

问题:

import Redis from 'ioredis'

var Client = new Redis()

Client.scanStream <---- Missing
从“ioredis”导入Redis
var Client=new Redis()
Client.scanStream为您提供了一个示例

const stream=redis.scanStream()
stream.on(“数据”,异步(键)=>{
//做你需要的
})

因此,这是一个示例代码,它将为您提供一个大致的概念。因此,您可以使用redis提供的两种功能。首先是KEYS函数,由于其O(N)复杂性,不应使用它。此示例在流中使用scan命令,即使用不同光标位置逐个执行。 它将扫描整个redis,但一次将返回10个结果,这不会像KEYS功能那样暂停redis。我们将把所有键推送到一个键数组中,然后您可以循环遍历所有键,并使用GET命令获取每个键的值

const redis = require('ioredis');
    let stream = redis.scanStream({
        match: "LOGIN::*",
        count: 10
    });
     stream.on("data", async (keys = []) => {
                        let key;
                        for (key of keys) {
                            if (!keysArray.includes(key)) {
                                await keysArray.push(key);
                            }
                        }
                    });
                    stream.on("end", () => {
                        res(keysArray);
                    });

不要只是添加代码。加上一些解释。正式注明@VishistVarugeese