2016-12-20 8 views
0

Ich habe einen Schlüssel in dem Format zu starten:Stack Redis alle Schlüssel löschen, die mit

Error.1 
Error.24 
Error.32 

StackExchange.Redis verwenden, wie würde ich mich über KeyDelete auf allen Tasten, die das Format Error. Vorstellungen?

Auf einer anderen Antwort, die ich das LUA-Skript gesehen habe:

EVAL "return redis.call('del', unpack(redis.call('keys', ARGV[1])))" 0 Error.* 

Aber ich bin nicht sicher, wie diese Database.ScriptEvaluate() mit anrufen

Antwort

1

Nur alle Schlüssel bekommen die Pattern-Matching, iterieren und löschen, etwas wie folgt aus:

using (var redisConnection = ConnectionMultiplexer.Connect(...)) 
{ 
    var server = redisConnection.GetServer(endpoint:...); 

    if (server != null) 
    { 
     foreach (var key in server.Keys(pattern: "Error.*")) 
     { 
       redisConnection.Database.KeyDelete(key); 
     } 
    } 
} 

Später bearbeiten:

Beispiel für die Einrichtung einer Redis-Verbindung: https://gist.github.com/cristipufu/9ad47caf3dba60d712484d0c880597b9

+1

Ein Wort der Vorsicht. Dieser Code funktioniert, aber Sie sollten einen 'using' Block für die Verbindung haben, z. 'using (var redisConnection = ConnectionMultiplexer.Connect (...)) {/ * Anderer Code innerhalb des using Blocks * /}'. Andernfalls werden Ihre Verbindungen möglicherweise nicht korrekt entsorgt und Sie werden mit Thread-Hunger enden, wie ich gerade in einer meiner Anwendungen festgestellt habe. Ich hatte Task-Manager geöffnet und ich konnte tatsächlich sehen, dass der Thread-Pool mit jeder Anfrage in dieser Anwendung wuchs, während ich debugging. –

+1

@AaronNewton, redis ist single-threaded, so dass Sie immer nur eine Verbindung benötigen. Erstellen Sie beim Start der App eine einzelne statische Verbindung und behalten Sie sie für immer bei. Sie müssen nicht verwenden, wenn Sie dies tun, und in der Tat sollte nicht seit dem Erstellen und Entfernen von Verbindungen ist teuer und jede Millisekunde zählt in einem Caching-Anbieter. – JMD

+0

Danke JMD. Seltsamerweise haben wir uns diesen Code nur angeschaut, da er einige Leistungsprobleme hat. –

Verwandte Themen