web-dev-qa-db-ja.com

adminコマンドを有効にして接続を作成しない限り、このコマンドは使用できません。

Booksleeveを使用してRedisで以下を実行しようとした場合。

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

次のようなエラーが表示されます。

Adminコマンドを有効にして接続を作成しない限り、このコマンドは使用できません。」

管理者としてコマンドを実行する方法がわかりませんか?管理者アクセス権を持つdbにa/cを作成し、それを使用してログインする必要がありますか?

29
Justin Homes

基本的に、通常の操作では必要ないが、不適切に使用すると多くの問題を引き起こす可能性のある危険なコマンド(つまり、例がFlushDbであるため、tsqlのdrop databaseに相当)は次のとおりです。 「はい、そうするつもりでした...」フラグで保護されています。

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

エラーメッセージを改善して、これを非常に明確かつ明確にします。

25
Marc Gravell

StackExchange.Redis の回答を更新しました:

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

ここで作成されるオブジェクトは、アプリケーションごとに1回作成し、グローバルシングルトンとして共有する必要があることにも注意してください Marc

ConnectionMultiplexerは多くのことを行うため、呼び出し元間で共有および再利用できるように設計されています。操作ごとにConnectionMultiplexerを作成しないでください。完全にスレッドセーフであり、この使用に対応しています。

63
Todd Menier

マルチプレクサを作成するときに、これをC#で設定することもできます-set AllowAdmin = true

    private ConnectionMultiplexer GetConnectionMultiplexer()
    {
        var options = ConfigurationOptions.Parse("localhost:6379");
        options.ConnectRetry = 5;
        options.AllowAdmin = true;
        return ConnectionMultiplexer.Connect(options);
    }
0
David McEleney