我有一个带有很多键的Redis,它们以某种格式存在,并且我想要获取符合某些模式的键并对它们执行一些操作。由于在生产环境中不推荐使用KEYS方法,因此我不使用它。我想知道在使用SCAN时如何以最佳方式编写代码。我必须像使用承诺的while循环一样做一些事情,我的当前解决方案看起来像这样(代码有点简化):
'use strict'
const Promise = require('bluebird');
const config = require('./config');
const client = require('./clinet');
let iterator = 0;
Promise.coroutine(function* () {
do {
iterator = yield clinet.scanAsync(iterator, 'myQuery', 'COUNT', config.scanChunkSize)
.then(data => {
let nextIterator = data[0];
let values = data[1];
//do some magic with values
return nextIterator;
})
} while (iterator !== '0');
})();
有没有我所不知道的更好的方法?
bluebird.promisifyAll(redis.RedisClient.prototype);
。 - sillyslux