Abbiamo una lista di centinaia di migliaia di chiavi Redis contenenti tutti i tipi di caratteri speciali e vorremmo eliminarli in blocco. Ci sono alcuni grandi risposte a un problema simile su questa questione: How to atomically delete keys matching a pattern using RedisCome eliminare in blocco centinaia di migliaia di chiavi con caratteri speciali in Redis
TUTTAVIA, non riesco a trovare una risposta per il caso in cui:
- abbiamo un gran numero di chiavi (centinaia di migliaia)
- i tasti hanno tutte le maniere di caratteri speciali come virgolette ("), backslash(), tutti i tipi di caratteri Unicode strani, ecc
- Stiamo utilizzando le finestre Redis-CLI client
- Bonus: Idealmente saremmo in grado di emettere questo comando come par t di una transazione MULTI/EXEC così possiamo anche cancellare un SET atomicamente insieme ai tasti.
Mi piacerebbe se solo potessimo fare qualcosa di simile al di sotto, ma hanno maneggia chiavi con tutti i caratteri speciali che danno problemi Redis:
redis-cli SMEMBERS "myGiganticListOfKeys" | xargs --delim='\n' redis-cli DEL
Purtroppo questo solo dà il seguito errore:
"C:/Program Files (x86)/Git/bin/xargs.exe": redis-cli: Bad file number
penso che questo sarebbe altrimenti funzionare se non avessimo i caratteri speciali nei tasti.
Grazie mille in anticipo.
Non sono intimo con il fork di Windows, ma se redis-cli supporta l'opzione --pipe, puoi preparare un file di testo con tutti i comandi 'DEL' e collegarlo direttamente. –
@RyanVincent In realtà abbiamo l'elenco esatto delle chiavi che vogliamo eliminare - sono in un set. Il problema sta prendendo quel set (ad esempio SMEMBERS "myKeyName") e cancellandoli tutti quando c'è un numero grande e le chiavi hanno caratteri speciali. – jakejgordon
Grazie per l'idea @ ItamarHaber, ma anche se questo ha funzionato - cosa che indovino non è come dubito che sia diverso dall'avere la lista di chiavi disponibile da SMEMBERS mykeyName - non sarebbe terribilmente pratico come stiamo provando a scrivere uno script PowerShell riutilizzabile per eliminare tutte le chiavi che si trovano in un set specificato. Creare un file temporaneo come parte di questo processo e quindi ripulirlo non sarebbe l'ideale. Grazie comunque. – jakejgordon