Самый простой способ удалить ключи от шаблона используется keys
команду, чтобы получить ключи, соответствующие шаблону, а затем удалить их один за другим, что аналогичен приведенному вами примеру командной строки. Вот пример реализован с ioredis:
var Redis = require('ioredis');
var redis = new Redis();
redis.keys('sample_pattern:*').then(function (keys) {
// Use pipeline instead of sending
// one command each time to improve the
// performance.
var pipeline = redis.pipeline();
keys.forEach(function (key) {
pipeline.del(key);
});
return pipeline.exec();
});
Однако, когда база данных имеет большой набор ключей (скажем, миллион), keys
будет блокировать базу данных в течение нескольких секунд. В этом случае полезно использовать scan
. ioredis имеет scanStream
функцию, чтобы помочь вам перебрать базу данных легко:
var Redis = require('ioredis');
var redis = new Redis();
// Create a readable stream (object mode)
var stream = redis.scanStream({
match: 'sample_pattern:*'
});
stream.on('data', function (keys) {
// `keys` is an array of strings representing key names
if (keys.length) {
var pipeline = redis.pipeline();
keys.forEach(function (key) {
pipeline.del(key);
});
pipeline.exec();
}
});
stream.on('end', function() {
console.log('done');
});
Не забудьте проверить официальную документацию scan
команды для получения дополнительной информации: http://redis.io/commands/scan.
Я думаю, с помощью 'unlink' более эффективен, чем 'del', например,' redis.unlink (keys) 'и удалять цикл' конвейер' и 'forEach'. –