Booksleeveを使用してRedisで以下を実行しようとした場合。
using (var conn = new RedisConnection(server, port, -1, password))
{
var result = conn.Server.FlushDb(0);
result.Wait();
}
次のようなエラーが表示されます。
Adminコマンドを有効にして接続を作成しない限り、このコマンドは使用できません。」
管理者としてコマンドを実行する方法がわかりませんか?管理者アクセス権を持つdbにa/cを作成し、それを使用してログインする必要がありますか?
基本的に、通常の操作では必要ないが、不適切に使用すると多くの問題を引き起こす可能性のある危険なコマンド(つまり、例がFlushDb
であるため、tsqlのdrop database
に相当)は次のとおりです。 「はい、そうするつもりでした...」フラグで保護されています。
using (var conn = new RedisConnection(server, port, -1, password,
allowAdmin: true)) <==== here
エラーメッセージを改善して、これを非常に明確かつ明確にします。
StackExchange.Redis の回答を更新しました:
var conn = ConnectionMultiplexer.Connect("localhost,allowAdmin=true");
ここで作成されるオブジェクトは、アプリケーションごとに1回作成し、グローバルシングルトンとして共有する必要があることにも注意してください Marc :
ConnectionMultiplexerは多くのことを行うため、呼び出し元間で共有および再利用できるように設計されています。操作ごとにConnectionMultiplexerを作成しないでください。完全にスレッドセーフであり、この使用に対応しています。
マルチプレクサを作成するときに、これをC#で設定することもできます-set AllowAdmin
= true
private ConnectionMultiplexer GetConnectionMultiplexer()
{
var options = ConfigurationOptions.Parse("localhost:6379");
options.ConnectRetry = 5;
options.AllowAdmin = true;
return ConnectionMultiplexer.Connect(options);
}