Когда я пробую выше, я получаю следующую ошибку (error) LOADING Redis is loading the dataset in memory. Можете ли вы указать, почему?
Рам Патра
4
@Ramswaroop - вы перезапустили Redis, и в настоящее время он загружает данные из постоянного хранилища. Пока этот процесс (загрузка) активен, вы не можете манипулировать БД. Либо дождитесь его завершения, либо настройте Redis без сохранения состояния и перезапустите его (он будет пустым, поэтому вам не нужно будет выполнять команду FLUSHALL после ее запуска).
Итамар Хабер
@ItamarHaber Спасибо за помощь, я тоже понял.
Рам Патра
1
@ Нет, если у вас нет клиентской библиотеки Redis в C #, вы можете просто запустить эту команду, например, так: (new Process { StartInfo = new ProcessStartInfo { FileName = "redis-cli", Arguments = "flushall", CreateNoWindow = true }}).start();
Кристиан,
2
Используйте -hфлаг, чтобы указать расположение сервера Redis
Adam F
194
Головы, которые FLUSHALLмогут быть излишними. FLUSHDBтолько для очистки базы данных. FLUSHALLуничтожит весь сервер. Как и в каждой базе данных на сервере. Поскольку вопрос касался очистки базы данных, я думаю, что это достаточно важное различие, чтобы заслужить отдельный ответ.
+1 от меня, я думал, что это был лучший ответ на самом деле. Конечно, Вопрос ОП гласит «стереть все», но затем следует «дать мне пустую базу данных» - независимо от того, что он на самом деле имел в виду, я думаю, что сделанное вами различие полезно, если не сказать больше.
Дуг
28
Ответы пока абсолютно верны; они удаляют все ключи.
Однако, если вы также хотите удалить все сценарии Lua из экземпляра Redis, вы должны выполнить следующие действия:
Нет, он задал один вопрос, и за два года с тех пор возможности Redis увеличились. Вопрос ОП касался конкретно удаления ключей. Вы отвечаете на другой вопрос, чем этот.
Настоящий законопроект
15
@TheRealBill Вы должны подумать о том, что полезно для нынешних и будущих читателей SO. Ответы здесь не рассматривается OP еще I want everything wiped out and give me a blank database.вопрос больше . Имхо, моё дополнение хорошее, которое помогло нескольким людям. Не стесняйтесь не соглашаться, конечно, это также то, о чем ТАК.
Tw Bert
2
Контекст - это все, и первое предложение устанавливает это: «Я хочу удалить все ключи». Переписать вопрос, чтобы дать другой ответ, - это не то, о чем мне говорят. Речь идет о том, чтобы задать заданный вопрос - следовательно, флаг модерации, указывающий на рассматриваемый ответ, отвечает на другой вопрос. Но мнения расходятся.
Настоящий Билл
Если вы запускаете сервер самостоятельно, самый быстрый способ стереть все - это убить сервер и перезапустить его (обнаружил это случайно)
В наших производственных и опытных базах данных тысячи ключей. Время от времени нам нужно удалять некоторые ключи (по некоторой маске), изменять по некоторым критериям и т. Д. Конечно, невозможно сделать это вручную из CLI, особенно с использованием шардинга (512 логических дБ в каждом физическом).
Для этого я пишу клиентский инструмент Java, который выполняет всю эту работу. В случае удаления ключей утилита может быть очень простой, там только один класс:
public class DataCleaner {
public static void main(String args[]) {
String keyPattern = args[0];
String host = args[1];
int port = Integer.valueOf(args[2]);
int dbIndex = Integer.valueOf(args[3]);
Jedis jedis = new Jedis(host, port);
int deletedKeysNumber = 0;
if(dbIndex >= 0){
deletedKeysNumber += deleteDataFromDB(jedis, keyPattern, dbIndex);
} else {
int dbSize = Integer.valueOf(jedis.configGet("databases").get(1));
for(int i = 0; i < dbSize; i++){
deletedKeysNumber += deleteDataFromDB(jedis, keyPattern, i);
}
}
if(deletedKeysNumber == 0) {
System.out.println("There is no keys with key pattern: " + keyPattern + " was found in database with host: " + host);
}
}
private static int deleteDataFromDB(Jedis jedis, String keyPattern, int dbIndex) {
jedis.select(dbIndex);
Set<String> keys = jedis.keys(keyPattern);
for(String key : keys){
jedis.del(key);
System.out.println("The key: " + key + " has been deleted from database index: " + dbIndex);
}
return keys.size();
}
}
Написание такого рода инструментов я считаю очень легким и трачу не более 5-10 минут.
FLUSHALL Удаляет все существующие ключи Keys of All. Для версии Redis> 4.0 поддерживается FLUSHALL ASYNC, которая запускается в фоновом потоке без блокировки сервера
https://redis.io/commands/flushall
По моему опыту, если у вас есть постоянство, вы действительно должны следовать этой процедуре + также удалить любой файл .aof + выполнить команду redis-cli flushall, чтобы действительно удалить все.
ywarnier
4
Используйте, FLUSHALL ASYNCесли используете (Redis 4.0.0 или выше) иначе FLUSHALL.
Хотя ваше сообщение может ответить на этот вопрос, в нем отсутствует некоторая документация. Пожалуйста, отредактируйте свой ответ и предоставьте его.
Привет
2
Я думаю, что иногда останавливайте Redis-сервер и удаляйте rdb-файлы, убедитесь, что нет данных, которые можно перезагрузить. затем запустите редис-сервер, теперь он новый и пустой.
После запуска Redis-сервера используйте: service redis-server start --port 8000или redis-server.
Используйте redis-cli -p 8000для подключения к серверу в качестве клиента в другом терминале.
Вы можете использовать либо
FLUSHDB - Удалить все ключи текущей выбранной БД. Эта команда никогда не подведет. Сложность по времени для этой операции составляет O (N), где N - это количество ключей в базе данных.
FLUSHALL - Удалить все ключи всех существующих баз данных, а не только выбранную в данный момент. Эта команда никогда не подведет. Сложность по времени для этой операции составляет O (N), где N - это количество ключей во всех существующих базах данных.
Проверьте документацию для опции ASYNC для обоих.
Если вы используете Redis через его интерфейс python, используйте эти две функции для одинаковых функций:
def flushall(self):
"Delete all keys in all databases on the current host"
return self.execute_command('FLUSHALL')
а также
def flushdb(self):
"Delete all keys in the current database"
return self.execute_command('FLUSHDB')
Есть разные подходы. Если вы хотите сделать это удаленно, выполните команду flushall для этого экземпляра, используя инструмент командной строки redis-cli или любые другие инструменты, например telnet, SDK для языка программирования. Или просто войдите в систему на этом сервере, убейте процесс, удалите его файл dump.rdb и appendonly.aof (сделайте резервную копию перед удалением).
Если вы используете Java, то из документации вы можете использовать любой из них в зависимости от вашего варианта использования.
/**
* Remove all keys from all databases.
*
* @return String simple-string-reply
*/
String flushall();
/**
* Remove all keys asynchronously from all databases.
*
* @return String simple-string-reply
*/
String flushallAsync();
/**
* Remove all keys from the current database.
*
* @return String simple-string-reply
*/
String flushdb();
/**
* Remove all keys asynchronously from the current database.
*
* @return String simple-string-reply
*/
String flushdbAsync();
Код:
RedisAdvancedClusterCommands syncCommands = // get sync() or async() commands
syncCommands.flushdb();
del *
не работает. Возвращает 0.Ответы:
С редис-кли:
Например, в вашей оболочке:
источник
(error) LOADING Redis is loading the dataset in memory
. Можете ли вы указать, почему?(new Process { StartInfo = new ProcessStartInfo { FileName = "redis-cli", Arguments = "flushall", CreateNoWindow = true }}).start();
-h
флаг, чтобы указать расположение сервера RedisГоловы, которые
FLUSHALL
могут быть излишними.FLUSHDB
только для очистки базы данных.FLUSHALL
уничтожит весь сервер. Как и в каждой базе данных на сервере. Поскольку вопрос касался очистки базы данных, я думаю, что это достаточно важное различие, чтобы заслужить отдельный ответ.источник
Ответы пока абсолютно верны; они удаляют все ключи.
Однако, если вы также хотите удалить все сценарии Lua из экземпляра Redis, вы должны выполнить следующие действия:
СЦЕНАРИЙ ФЛЕШ
ОП задает два вопроса; это завершает второй вопрос ( все уничтожено).
источник
I want everything wiped out and give me a blank database.
вопрос больше . Имхо, моё дополнение хорошее, которое помогло нескольким людям. Не стесняйтесь не соглашаться, конечно, это также то, о чем ТАК.FLUSHALL Удалить все ключи из всех баз данных
FLUSHDB Удалить все ключи из текущей базы данных
FLUSH SCRIPT Удалите все скрипты из кэша скриптов.
источник
Если вы используете гем redis-rb, вы можете просто позвонить:
источник
Этот метод работал для меня - удалить все из текущей подключенной базы данных в вашем кластере Jedis.
источник
Еще один вариант с моей стороны:
В наших производственных и опытных базах данных тысячи ключей. Время от времени нам нужно удалять некоторые ключи (по некоторой маске), изменять по некоторым критериям и т. Д. Конечно, невозможно сделать это вручную из CLI, особенно с использованием шардинга (512 логических дБ в каждом физическом).
Для этого я пишу клиентский инструмент Java, который выполняет всю эту работу. В случае удаления ключей утилита может быть очень простой, там только один класс:
Написание такого рода инструментов я считаю очень легким и трачу не более 5-10 минут.
источник
FLUSHALL Удаляет все существующие ключи Keys of All. Для версии Redis> 4.0 поддерживается FLUSHALL ASYNC, которая запускается в фоновом потоке без блокировки сервера https://redis.io/commands/flushall
FLUSHDB - удаляет все ключи в выбранной базе данных. https://redis.io/commands/flushdb
Временная сложность выполнения операций будет O (N), где N - количество ключей в базе данных.
Ответ от Redis будет простой строкой «ОК»
источник
Вы можете использовать FLUSHALL, который удалит все ключи из каждой вашей базы данных. Где, как FLUSHDB удалит все ключи из нашей текущей базы данных.
источник
источник
Используйте,
FLUSHALL ASYNC
если используете (Redis 4.0.0 или выше) иначеFLUSHALL
.https://redis.io/commands/flushall
Примечание : все до выполнения
FLUSHALL ASYNC
будет выселено. Изменения, сделанные во время выполненияFLUSHALL ASYNC
, останутся без изменений.источник
Откройте Redis-Cli и введите:
источник
Я думаю, что иногда останавливайте Redis-сервер и удаляйте rdb-файлы, убедитесь, что нет данных, которые можно перезагрузить. затем запустите редис-сервер, теперь он новый и пустой.
источник
redis-cli -h <host> -p <port> flushall
Он удалит все данные с подключенного клиента (с хостом и портом)
источник
После запуска Redis-сервера используйте:
service redis-server start --port 8000
илиredis-server
.Используйте
redis-cli -p 8000
для подключения к серверу в качестве клиента в другом терминале.Вы можете использовать либо
Проверьте документацию для опции ASYNC для обоих.
Если вы используете Redis через его интерфейс python, используйте эти две функции для одинаковых функций:
а также
источник
Ваши вопросы, похоже, касаются удаления целых ключей в базе данных. В этом случае вы должны попробовать:
redis-cli
(если она работает на порту 6379), иначе вам также нужно будет указать номер порта.select {Index}
)flushdb
Если вы хотите сбросить ключи во всех базах данных, попробуйте
flushall
.источник
Один клик в FastoRedis / FastoNoSQL
источник
Ты можешь использовать
FLUSHDB
например
Список баз данных:
Список ключей
Добавьте одно значение к ключу
Создать другой ключ с двумя значениями
Перечислите все значения в key2
Сделать FLUSHDB
Список ключей и баз данных
источник
Вы можете использовать следующий подход в Python
источник
Лучше, если у вас есть RDM (Redis Desktop Manager). Вы можете подключиться к вашему серверу Redis, создав новое соединение в RDM.
После подключения вы можете проверить текущие данные, а также вы можете поиграть с любой командой redis.
Открытие кли в RDM.
1) Щелкните правой кнопкой мыши по соединению, вы увидите консольную опцию, просто нажмите на нее, откроется новое окно консоли в нижней части RDM.
Возвращаясь к вашему вопросу, FLUSHALL - это команда, вы можете просто набрать FLUSHALL в redis cli.
Более того, если вы хотите узнать о любой команде redis и ее правильном использовании, перейдите по ссылке ниже. https://redis.io/commands .
источник
Есть разные подходы. Если вы хотите сделать это удаленно, выполните команду flushall для этого экземпляра, используя инструмент командной строки redis-cli или любые другие инструменты, например telnet, SDK для языка программирования. Или просто войдите в систему на этом сервере, убейте процесс, удалите его файл dump.rdb и appendonly.aof (сделайте резервную копию перед удалением).
источник
Если вы используете Java, то из документации вы можете использовать любой из них в зависимости от вашего варианта использования.
Код:
Узнайте больше: https://github.com/lettuce-io/lettuce-core/wiki/Redis-Cluster
источник