Как удалить все в Redis?

Я хочу удалить все ключи. Я хочу, чтобы все было уничтожено и дало мне пустую базу данных.

Есть ли способ сделать это в Redis клиент?

Ответ 1

С помощью redis-cli:

  • FLUSHDB - удаляет все ключи из текущей базы данных соединения.
  • FLUSHALL - удаляет все ключи из всех баз данных.

Например, в вашей оболочке:

redis-cli flushall

Ответ 2

Загорается, что FLUSHALL может быть излишним. FLUSHDB - это тот, который только очищает базу данных. FLUSHALL уничтожит весь сервер. Как в каждой базе данных на сервере. Поскольку вопрос касался очистки базы данных, я думаю, что это достаточно важное различие, чтобы заслужить отдельный ответ.

Ответ 3

Ответы до сих пор абсолютно верны; они удаляют все ключи.

Однако, если вы также хотите удалить все сценарии Lua из экземпляра Redis, вы должны следовать ему:

SCRIPT FLUSH

ОП задает два вопроса; это завершает второй вопрос ( все, вытертый).

Ответ 4

FLUSHALL Удалите все ключи из всех баз данных.

FLUSHDB Удалить все ключи из текущей базы данных

SCRIPT FLUSH Удалите все сценарии из кэша script.

Ответ 5

Если вы используете жемчуг redis-rb, тогда вы можете просто позвонить:

your_redis_client.flushdb

Ответ 6

Этот метод работал у меня - удалите все текущую подключенную базу данных в кластере Jedis.

public static void resetRedis() {
    jedisCluster = RedisManager.getJedis(); // your JedisCluster instance

    for (JedisPool pool : jedisCluster.getClusterNodes().values()) {

        try (Jedis jedis = pool.getResource()) {
            jedis.flushAll();
        }
        catch (Exception ex){
            System.out.println(ex.getMessage());
        }
    }

}

Ответ 7

Еще один вариант с моей стороны:

В наших производственных и предварительных базах данных есть тысячи ключей. Время от времени нам нужно удалить некоторые ключи (по какой-то маске), изменить по некоторым критериям и т.д. Конечно, нет способа сделать это вручную из CLI, особенно имея осколки (512 логических dbs в каждом физическом).

С этой целью я пишу 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 минут.

Ответ 8

FLUSHALL Удаляет все ключи всех существующих баз данных. FOr Redis версии 4.0, поддерживается FLUSHALL ASYNC, которая работает в фоновом потоке, блокируя сервер https://redis.io/commands/flushall

FLUSHDB - Удаляет все ключи в выбранной базе данных. https://redis.io/commands/flushdb

Сложность времени для выполнения операций будет O (N), где N - количество ключей в базе данных.

Ответ от redis будет простой строкой "ОК"

Ответ 9

Вы можете использовать FLUSHALL, который удалит все ключи из каждой базы данных. Если FLUSHDB удалит все ключи из нашей текущей базы данных.

Ответ 11

  • Остановить экземпляр Redis.
  • Удалить файл RDB.
  • Запустить экземпляр Redis.

Ответ 12

Я думаю, иногда останавливают redis-сервер и удаляют rdb, aof файлы. убедитесь, что данные не могут быть перезагружены. затем запустите redis-server, теперь он новый и пустой.

Ответ 13

redis-cli -h <host> -p <port> flushall

Он удалит все данные с подключенного клиента (с хостом и портом)

Ответ 14

После запуска Redis-сервера используйте: service redis-server start --port 8000 или redis-server.

Используйте redis-cli -p 8000 для подключения к серверу в качестве клиента в другом терминале.

Вы можете использовать либо

  1. FLUSHDB - удалить все ключи выбранной БД. Эта команда никогда не терпит неудачу. Сложность времени для этой операции - O (N), N - количество ключей в базе данных.
  2. 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')

Ответ 15

Откройте redis-cli и введите:

FLUSHALL

Ответ 16

Вы можете использовать FLUSHDB

например

Список баз данных:

127.0.0.1:6379> info keyspace
# Keyspace

Список ключей

127.0.0.1:6379> keys *
(empty list or set)

Добавьте одно значение к ключу

127.0.0.1:6379> lpush key1 1
(integer) 1
127.0.0.1:6379> keys *
1) "key1"
127.0.0.1:6379> info keyspace
# Keyspace
db0:keys=1,expires=0,avg_ttl=0

Создать другой ключ с двумя значениями

127.0.0.1:6379> lpush key2 1
(integer) 1
127.0.0.1:6379> lpush key2 2
(integer) 2
127.0.0.1:6379> keys *
1) "key1"
2) "key2"
127.0.0.1:6379> info keyspace
# Keyspace
db0:keys=2,expires=0,avg_ttl=0

Список всех значений в key2

127.0.0.1:6379> lrange key2 0 -1
1) "2"
2) "1"

Делать FLUSHDB

127.0.0.1:6379> flushdb
OK

Список ключей и баз данных

127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> info keyspace
# Keyspace

Ответ 17

Кажется, что ваши вопросы касаются удаления целых ключей в базе данных. В этом случае вы должны попробовать:

  1. Подключиться к redis. Вы можете использовать команду redis-cli (если она запущена на порту 6379), иначе вам также нужно будет указать номер порта.
  2. Выберите свою базу данных (команда select {Index})
  3. Выполните команду flushdb

Если вы хотите скрывать ключи во всех базах данных, вам следует попробовать flushall.

Ответ 18

Лучше, если у вас есть RDM (Redis Desktop Manager). Вы можете подключиться к вашему серверу redis, создав новое соединение в RDM.

После его подключения вы можете проверить данные в реальном времени, также вы можете играть с любой командой redis.

Открытие кли в RDM.

1) Щелкните правой кнопкой мыши по соединению, вы увидите консольную опцию, просто нажмите на нее, откроется новое окно консоли внизу RDM.

Возвращаясь к вашему вопросу, FLUSHALL - это команда, вы можете просто набрать FLUSHALL в redis cli.

Более того, если вы хотите узнать о любой команде redis и ее правильном использовании, перейдите по ссылке ниже. https://redis.io/commands.

Ответ 19

Существуют разные подходы. Если вы хотите сделать это на удаленном компьютере, вызовите flushall в этот экземпляр, используя инструмент командной строки redis-cli или любые другие инструменты, например telnet, SDK языка программирования. Или просто войдите на этот сервер, убейте процесс, удалите его файл dump.rdb и appendonly.aof (создайте резервные копии перед удалением).

Ответ 21

FLUSHALL: удалить все ключи из всех баз данных

FLUSHDB: из конкретной базы данных.

enter image description here

Ответ 22

Если вы используете 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();

Читать подробнее: https://github.com/lettuce-io/lettuce-core/wiki/Redis-Cluster