Эта команда недоступна, если соединение не создано с включенными админ-командами
При попытке запустить следующее в 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 с доступом администратора и логином с этим?
Ответы
Ответ 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);
}