2013-08-10 6 views
20

Podczas próby uruchomienia następujących czynności w Redis przy użyciu książki.to polecenie jest niedostępne, chyba że połączenie zostało utworzone przy włączonych komendach administracyjnych.

using (var conn = new RedisConnection(server, port, -1, password)) 
{ 
    var result = conn.Server.FlushDb(0); 
    result.Wait(); 
} 

pojawia się błąd mówiąc:

Komenda ta nie jest dostępna, chyba że gra jest tworzona z admin-komend obsługujących”

Nie jestem pewien, jak mogę wykonać komendy jako administrator? Czy muszę utworzyć a/c w db z dostępem administratora i zaloguj się z tym?

Odpowiedz

18

Zasadniczo, niebezpieczne polecenia, które nie są potrzebne w rutynowych operacjach, ale mogą powodować wiele problemów, jeśli są stosowane niewłaściwie (tj. równowartość drop database w TSQL, ponieważ Twój przykład jest FlushDb) są chronione przez „tak, mam na myśli to zrobić ...” flag:

using (var conn = new RedisConnection(server, port, -1, password, 
      allowAdmin: true)) <==== here 

będę poprawić komunikat o błędzie, aby ten bardzo jasne i wyraźny.

47

Updated odpowiedź na StackExchange.Redis:

var conn = ConnectionMultiplexer.Connect("localhost,allowAdmin=true"); 

Należy również zauważyć, że obiekt tworzony tutaj powinny być tworzone raz w aplikacji i dzielone jako globalnego Singleton, za Marc:

Ponieważ ConnectionMultiplexer robi dużo, jest zaprojektowany, aby być udostępniony i ponownie użyty między dzwoniącymi. Nie powinieneś tworzyć multipleksu ConnectionMultiplexer dla każdej operacji. Jest w pełni bezpieczny dla wątków i gotowy do tego celu.