簡體   English   中英

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM