Node-redis: Удалить массив ключей в redis с помощью node-redis

Созданный на 29 сент. 2015  ·  5Комментарии  ·  Источник: NodeRedis/node-redis

У меня есть массивы ключей вроде ["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"

question

Все 5 Комментарий

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 - это опасно в большой производственной системе.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги