これは、幅広いアイデアを提供するサンプルコードです。したがって、redisが提供する2つのものを使用できます。 1つは、O(N)の複雑さのために使用すべきではないKEYS関数です。この例では、ストリーム内でスキャンコマンドを使用しています。つまり、カーソル位置が異なる1つずつスキャンコマンドを使用しています。これにより、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);
});