2012-11-18 8 views
6

Mam redis z wieloma kluczami (około 100), chcę wybrać tylko klucze z klasy ClassA (tylko przykład).Klucz klienta GetAll z określonej klasy

W tej chwili robię GetAllKeys, a następnie przechodzę w pętlę foreach na wszystkich elementach i wybieram tylko odpowiednie klucze.

Czy można wybrać odpowiednie klucze i uzyskać je wszystkie za pomocą jednej funkcji?

Kiedy robię GETALL mam tylko 2 pozycje podczas powinienem ominąć 45.

+0

Nie rób tego. Redis nie jest relacyjną bazą danych. Nie powinieneś używać polecenia KEYS w aplikacjach - jest to raczej polecenie debugowania. Ten projekt nie będzie skalowany za pomocą Redis. –

Odpowiedz

4

następujący kod pomoże ci odnaleźć specyficzne klucza, trzeba określić * wieloznaczny po ciągiem, pobierze tylko konkretne klawisze z serwera Redis.

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

     var getSpecificKeys = redisClient.SearchKeys(searchString); 

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

Od http://redis.io/commands/keys Ostrzeżenie: weź pod uwagę KLAWIS jako polecenie, które powinno być używane wyłącznie w środowiskach produkcyjnych z niezwykłą ostrożnością. Może to zrujnować wydajność, gdy jest wykonywane na dużych bazach danych. To polecenie jest przeznaczone do debugowania i operacji specjalnych, takich jak zmiana układu klawiatury. Nie używaj klawiszy w zwykłym kodzie aplikacji. Jeśli szukasz sposobu na znalezienie kluczy w podzbiorze klucza, rozważ użycie zestawów. – DanB

+0

Co zrobić, jeśli używam IDatabase zamiast RedisClient? Jak mogę uzyskać wszystkie klucze w db? – ayasha