Eu tenho matrizes de chaves como ["aaa", "bbb", "ccc"], então quero excluir todas essas chaves do redis usando um comando. Não quero iterar usando loop. Eu li sobre o comando redis DEL e no terminal redis-client funciona, mas usando nodejs não funciona
Redisclient.del (tokenKeys, function (err, count) {
Logger.info ("contagem é", contagem)
Logger.error ("errar é", errar)
})
onde tokenKeys = ["aaa", "bbb", "ccc"], este código funcionará se eu enviar uma chave como tokenKeys = "aaa"
client.del
pode receber um número variável de argumentos. Você pode usar apply
para converter seu array em argumentos (mas você também precisará enviar seu callback). Seria mais ou menos assim:
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);
É um pouco estranho, mas funcionará sem iterar.
@abhaygarg Isso deve funcionar imediatamente como você escreveu. Você poderia fornecer mais do seu código? Acho que o erro está em algum lugar do seu código. E qual versão você usa?
@stockholmux, essa não é a solução para o problema. Na verdade, é melhor usar a notação de array imediatamente em vez de usar argumentos (eles serão reescritos em um array interno).
sim, está funcionando, você pode passar array diretamente em Redisclient.del (tokenKeys, function (err, count) {
Logger.info ("contagem é", contagem)
Logger.error ("errar é", errar)
})
deletar bem você pode passar array em Redisclient.del () funciona bem
app.redis.keys('key_*', (err, keys) => {
keys.forEach(key => {
app.redis.del(key)
})
})
@knoxcard FYI - Não use CHAVES - é perigoso em grandes sistemas de produção.