Подтвердить что ты не робот

Эта команда недоступна, если соединение не создано с включенными админ-командами

При попытке запустить следующее в Redis с помощью bookleeve.

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

Я получаю сообщение об ошибке:

Эта команда недоступна, если соединение не создано с помощью admin-commands enabled "

Я не уверен, как выполнять команды как admin? Мне нужно создать a/c в db с доступом администратора и логином с этим?

4b9b3361

Ответ 1

В принципе, опасные команды, которые вам не нужны в обычных операциях, но которые могут вызвать множество проблем при неправильном использовании (т.е. эквивалент drop database в tsql, так как ваш пример FlushDb) защищены "да, я хотел сделать это..." флаг:

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

Я улучшу сообщение об ошибке, чтобы сделать это очень ясным и явным.

Ответ 2

Обновлен ответ для StackExchange.Redis:

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

Обратите внимание, что созданный здесь объект должен быть создан один раз для каждого приложения и разделен как глобальный синглтон, за Marc:

Поскольку ConnectionMultiplexer делает много, он предназначен для совместное использование и повторное использование между абонентами. Вы не должны создавать ConnectionMultiplexer за операцию. Он полностью потокобезопасен и готов для этого использования.

Ответ 3

Вы также можете установить это в С# при создании мультиплексора - установите AllowAdmin= true

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