Nodejs Redis 扫描不返回所有项目
Nodejs Redis Scan not returning all items
我已经检查了其他相关回复,我相信我做的一切都是正确的,但是它并没有返回所有的密钥,有什么想法可能导致这个问题吗?
我的扫描方式:
module.exports.scan = async(pattern, amountPerScan) => new Promise((resolve, reject) => {
let cursor = '0';
let keys = [];
function scan(){
redisClient.scan(cursor, 'MATCH', pattern, 'COUNT', amountPerScan, function(err, reply){
if(err){
reject(err);
}
cursor = reply[0];
const keysScan = reply[1];
if(keysScan.length){
keys = keys.concat(keysScan);
}
if(cursor === '0') {
return resolve(keys);
} else {
return scan();
}
});
}
scan();
});
这是我的处决:
const allItems = [];
for(let i = 0; i != 100; i++){
allItems.push(redisCache.set('abc.'+i, 'test'));
}
await Promise.all(allItems);
redisCache.scan('abc.*', '5').then((keys) => {
console.log(JSON.stringify(keys));
});
这是按键响应:
["abc.22","abc.91","abc.38","abc.44","abc.61","abc.28","abc.54","abc .13","abc.93","abc.99","abc.4","abc.64"]
原定为 100 个元素时只有 12 个元素。
谢谢。
愚蠢的错误,我没有在等待电话:
redisCache.scan('abc.*', '5').then((keys) => {
console.log(JSON.stringify(keys));
});
应该是:
await redisCache.scan('abc.*', '5').then((keys) => {
console.log(JSON.stringify(keys));
});
我已经检查了其他相关回复,我相信我做的一切都是正确的,但是它并没有返回所有的密钥,有什么想法可能导致这个问题吗?
我的扫描方式:
module.exports.scan = async(pattern, amountPerScan) => new Promise((resolve, reject) => {
let cursor = '0';
let keys = [];
function scan(){
redisClient.scan(cursor, 'MATCH', pattern, 'COUNT', amountPerScan, function(err, reply){
if(err){
reject(err);
}
cursor = reply[0];
const keysScan = reply[1];
if(keysScan.length){
keys = keys.concat(keysScan);
}
if(cursor === '0') {
return resolve(keys);
} else {
return scan();
}
});
}
scan();
});
这是我的处决:
const allItems = [];
for(let i = 0; i != 100; i++){
allItems.push(redisCache.set('abc.'+i, 'test'));
}
await Promise.all(allItems);
redisCache.scan('abc.*', '5').then((keys) => {
console.log(JSON.stringify(keys));
});
这是按键响应:
["abc.22","abc.91","abc.38","abc.44","abc.61","abc.28","abc.54","abc .13","abc.93","abc.99","abc.4","abc.64"]
原定为 100 个元素时只有 12 个元素。
谢谢。
愚蠢的错误,我没有在等待电话:
redisCache.scan('abc.*', '5').then((keys) => {
console.log(JSON.stringify(keys));
});
应该是:
await redisCache.scan('abc.*', '5').then((keys) => {
console.log(JSON.stringify(keys));
});