Ich habe Arrays von Schlüsseln wie ["aaa","bbb","ccc"], also möchte ich alle diese Schlüssel mit einem Befehl aus redis löschen. Ich möchte nicht mit Schleife iterieren. Ich habe über den Redis-Befehl DEL gelesen und auf dem Terminal-Redis-Client funktioniert es, aber mit nodejs funktioniert es nicht
Redisclient.del(tokenKeys,function(err,count){
Logger.info("count is", count)
Logger.error("err ist ",err)
})
where tokenKeys=["aaa","bbb","ccc"] , dieser Code funktioniert, wenn ich einen Schlüssel wie tokenKeys="aaa" sende
client.del
kann eine variable Anzahl von Argumenten annehmen. Sie können apply
, um Ihr Array in Argumente umzuwandeln (aber Sie müssen auch Ihren Callback pushen). Es würde ungefähr so aussehen:
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);
Es ist ein bisschen seltsam, aber es wird den Job ohne Iteration bekommen.
@abhaygarg Dies sollte
@stockholmux Dies ist nicht die Lösung des Problems. Tatsächlich ist es besser, sofort die Array-Notation zu verwenden, anstatt Argumente zu verwenden (sie werden in ein internes Array umgeschrieben).
Ja, es funktioniert, Sie können das Array direkt in Redisclient.del(tokenKeys,function(err,count){ übergeben.
Logger.info("count is", count)
Logger.error("err ist ",err)
})
es gut löschen Sie können das Array in Redisclient.del() übergeben, es funktioniert gut
app.redis.keys('key_*', (err, keys) => {
keys.forEach(key => {
app.redis.del(key)
})
})
@knoxcard FYI - Verwenden Sie keine SCHLÜSSEL - es ist auf großen Produktionssystemen gefährlich.