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



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



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

779   17  

17 ответов:

с redis-cli:

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

Redis в документации:

например, в командной строке:

redis-cli flushall

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

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

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

СКРИПТ FLUSH

ОП задает два вопроса; это завершает второй вопрос (все утерлись).

Если вы используете Redis-rb gem, то вы можете просто позвонить:

your_redis_client.flushdb

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

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

СКРИПТ FLUSH Удалите все сценарии из кэша сценариев.

этот метод работал для меня-удалите все текущие подключенные базы данных на вашем кластере 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());
        }
    }

}

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

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

для этого я пишу java client tool, который делает всю эту работу. В случае удаления ключей, программа может быть очень простой, только один класс там:

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 удаляет все ключи всех существующих баз данных . Для версии Redis > 4.0 поддерживается асинхронная синхронизация FLUSHALL, которая выполняется в фоновом потоке wjthout, блокирующем сервер https://redis.io/commands/flushall

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

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

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

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

используйте FLUSHALL ASYNC при использовании (Redis 4.0.0 или выше) else FLUSHALL

https://redis.io/commands/flushall

  1. остановить экземпляр Redis для.
  2. удалить файл RDB.
  3. запустить экземпляр Redis для.

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

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

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

после запуска Redis-сервера с помощью:service redis-server start --port 8000 или redis-server.

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

можно использовать

  1. FLUSHDB - удалить все ключи из выбранной БД. Эта команда никогда не подводит. Временная сложность для этой операции равна O (N), N-количество ключей в базе данных.
  2. FLUSHALL - удалить все ключи все существующие базы данных, а не только выбранного. Эта команда никогда не подводит. Временная сложность для этой операции составляет O (N), N-количество ключей во всех существующих базах данных.

проверьте документацию для асинхронные для обоих.

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

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

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

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

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

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

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

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

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

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

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

FLUSHALL

Comments

    Ничего не найдено.