Tengo matrices de claves como ["aaa", "bbb", "ccc"] así que quiero borrar todas estas claves de redis usando un comando. No quiero iterar usando loop. Leí sobre el comando de redis DEL y en el terminal redis-client funciona, pero usando nodejs no funciona
Redisclient.del (tokenKeys, function (err, count) {
Logger.info ("el recuento es", recuento)
Logger.error ("err is", err)
})
donde tokenKeys = ["aaa", "bbb", "ccc"], este código funciona si envío una clave como tokenKeys = "aaa"
client.del
puede tomar un número variable de argumentos. Puede usar apply
para convertir su matriz en argumentos (pero también deberá presionar su devolución de llamada). Se vería así:
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 un poco extraño, pero hará el trabajo sin iterar.
@abhaygarg Esto debería funcionar tal como lo escribió. ¿Podría proporcionar más de su código? Supongo que el error está en algún lugar de tu código. ¿Y qué versión usas?
@stockholmux, esta no es la solución al problema. En realidad, es mejor usar la notación de matriz de inmediato en lugar de usar argumentos (se reescribirán en una matriz interna).
sí, está funcionando, puede pasar directamente la matriz en Redisclient.del (tokenKeys, function (err, count) {
Logger.info ("el recuento es", recuento)
Logger.error ("err is", err)
})
se elimina bien, puede pasar la matriz en Redisclient.del () funciona bien
app.redis.keys('key_*', (err, keys) => {
keys.forEach(key => {
app.redis.del(key)
})
})
@knoxcard FYI: no use LLAVES, es peligroso en un sistema de producción grande.