2012-11-18 5 views
6

Ich habe eine Redis mit vielen Schlüsseln (etwa 100), ich möchte nur Schlüssel vom Typ der KlasseA (nur ein Beispiel) auswählen.Redis Client GetAll Keys aus einer bestimmten Klasse

Im Moment mache ich GetAllKeys und gehe dann in eine foreach-Schleife für alle Elemente und wähle nur die relevanten Schlüssel aus.

Ist es möglich, nur die relevanten Schlüssel auszuwählen und sie alle mit einer Funktion zu erhalten?

Wenn ich GetAll mache ich nur 2 Stück, während ich um 45.

+0

Tun Sie dies nicht. Redis ist keine relationale Datenbank. Sie sollten den KEYS-Befehl in Anwendungen nicht verwenden - es ist eher ein Debug-Befehl. Dieser Entwurf wird nicht mit Redis skalieren. –

Antwort

4

Code bekommen sollte Nachfolgend erhalten Sie spezifische Schlüssel finden helfen, müssen Sie * Wildcard-Zeichen nach Zeichenfolge angeben, werden nur bestimmte Schlüssel holen von Redis Server.

using (RedisClient redisClient = new RedisClient("localhost")) 
{ 
     string searchString = "ClassA*"; 

     var getSpecificKeys = redisClient.SearchKeys(searchString); 

     foreach (var getKey in getSpecificKeys) 
     { 
      // operation 
     } 
    } 
+3

Von http://redis.io/commands/keys Warnung: Betrachten Sie KEYS als einen Befehl, der nur in Produktionsumgebungen mit äußerster Sorgfalt verwendet werden sollte. Es kann die Leistung ruinieren, wenn es gegen große Datenbanken ausgeführt wird. Dieser Befehl ist zum Debuggen und für spezielle Operationen vorgesehen, z. B. zum Ändern des Schlüsselbereichslayouts. Verwenden Sie KEYS nicht in Ihrem normalen Anwendungscode. Wenn Sie nach einer Möglichkeit suchen, Schlüssel in einer Teilmenge Ihres Schlüsselbereichs zu finden, sollten Sie Sets verwenden. – DanB

+0

Was passiert, wenn ich IDatabase anstelle von RedisClient verwende? Wie bekomme ich alle Schlüssel in der db? – ayasha

Verwandte Themen