У меня есть массивы ключей вроде ["aaa", "bbb", "ccc"], поэтому я хочу удалить все эти ключи из redis с помощью одной команды. Я не хочу повторять использование цикла. Я читал о команде redis DEL и на терминале redis-client она работает, но с использованием nodejs она не работает
Redisclient.del (tokenKeys, function (err, count) {
Logger.info ("count is", количество)
Logger.error ("ошибка есть", ошибка)
})
где tokenKeys = ["aaa", "bbb", "ccc"], этот код будет работать, если я отправлю один ключ, например tokenKeys = "aaa"
client.del
может принимать переменное количество аргументов. Вы можете использовать apply
для преобразования вашего массива в аргументы (но вам также нужно будет нажать на ваш обратный вызов). Это выглядело бы примерно так:
var tokenKeys = ["aaa","bbb","ccc"];
tokenKeys.push(function(err,count){
Logger.info("count is ",count)
Logger.error("err is ",err)
});
Redisclient.del.apply(Redisclient,tokenKeys);
Это немного странно, но он выполнит свою работу без повторений.
@abhaygarg Это должно работать сразу после того, как вы это написали. Не могли бы вы предоставить больше своего кода? Думаю, ошибка где-то в вашем коде. А какой версией пользуетесь?
@stockholmux это не решение проблемы. На самом деле лучше сразу использовать нотацию массива вместо аргументов (они будут переписаны во внутренний массив).
да, это работает, вы можете напрямую передать массив в Redisclient.del (tokenKeys, function (err, count) {
Logger.info ("count is", количество)
Logger.error ("ошибка есть", ошибка)
})
он удаляет нормально, вы можете передать массив в Redisclient.del (), он отлично работает
app.redis.keys('key_*', (err, keys) => {
keys.forEach(key => {
app.redis.del(key)
})
})
@knoxcard FYI - Не используйте KEYS - это опасно в большой производственной системе.