我想用键匹配模式'LOGIN::'搜索redis数据库。我在我的应用程序中使用 ioredis。昨天我搜索了整个网络,但我得到的选项很少,如下所示:
键
扫描流
问题:
import Redis from 'ioredis'
var Client = new Redis()
Client.scanStream <---- Missing
Redis 实例中缺少 scanStream 方法,或者如果我做错了什么,请告诉我。
所以这是示例代码,可以为您提供一个广泛的想法。所以你可以使用 redis 提供的两个东西。首先是 KEYS 函数,由于它的 O(N) 复杂性,它不应该被使用。此示例在流中使用扫描命令,即逐个使用不同的光标位置。它将扫描整个 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);
});
给你一个例子。
const stream = redis.scanStream()
stream.on("data", async (keys) => {
// do what you need
})