Ho installato il client redis Stack Exchange in C#. Posso cancellare solo una chiave o un array di chiavi ma non so come cancellare i tasti con il prefisso. Oppure un'altra soluzione può essere prima ottenere tutte le chiavi per modello e quindi eliminarle. Ma non so come ottenere le chiavi secondo lo schema.Redis Stack Scambio come eliminare o ottenere chiavi per modello
11
A
risposta
7
L'eliminazione è separata da chiave, a meno che non si stia scaricando l'intero database.
scansione Key è facilmente reperibile sul IServer
API, ed è discusso molto più qui: https://github.com/StackExchange/StackExchange.Redis/blob/master/Docs/KeysScan.md
Tuttavia, occorre ancora generalmente essere evitato in produzione - che non è il caso d'uso destinati redis.
8
È possibile eseguire le operazioni seguenti per eliminare in gruppo elementi dalla cache redis. (StackExchange.Redis.StrongName v1.0.488)
foreach (var ep in _muxer.GetEndPoints())
{
var server = _muxer.GetServer(ep);
var keys = server.Keys(database: _redisDatabase, pattern: pattern + "*").ToArray();
_db.KeyDeleteAsync(keys);
}
_muxer
è istanza di ConnectionMultiplexer
Non elimina dal modello come lei ha chiesto, ma molto più veloce di eliminazione di ogni tasto separatamente.
Come funziona in un cluster? Riceviamo il doppio degli endpoint (inclusi gli slave) e cancelliamo troppe chiavi, dovremmo filtrare per server.IsSlave == false? – MaurGi
Non l'ho provato, ma penso che dovresti invocare gli stessi server usati nei singoli metodi di cancellazione. –