Я использую скрипт Node.JS с пакетом redis
npm, чтобы получить все ключи Redis, соответствующие шаблону animals:toFeed:*
.Примером совпадения будет ключ animals:toFeed:17ed160f59c5b31caf7e741a4e62cb7785414cd
.
. Используя приведенный ниже код, может быть 10 совпадений, но код вернет только несколько, например 2-3.В чем может быть проблема, и как мы можем ее исправить?
Использование Redis 4.0.11, Node.js 8.11.3, пакет redis 2.8.0 npm
async function scanAsync(cursor, pattern, results) {
return redis.scanAsync(cursor, 'MATCH', pattern, 'COUNT', '10')
.then(function(reply) {
cursor = reply[0]
if(cursor === '0') {
console.log('Scan complete')
} else {
console.log('Match #', i)
let keys = reply[1]
keys.forEach(function(key, i) {
results.push(key)
})
return scanAsync(cursor, pattern, results)
}
})
}
let keys = []
let prefix = 'animals:toFeed:*'
await scanAsync('0', prefix, keys)
Обновление
- Перезагрузка Redis.Все еще есть неполные результаты сканирования
- Удалил все ключи, которые соответствуют шаблону, и добавил некоторые ключи обратно.Теперь все возвращается при выполнении сканирования.После часа игры он начинает возвращать неполные результаты еще раз.Повторение этого больше не работает, чтобы решить проблему.