929 Stimmen

Wie kann ich alles in Redis löschen?

Ich möchte alle Schlüssel löschen. Ich möchte, dass alles gelöscht wird und ich eine leere Datenbank habe.

Gibt es eine Möglichkeit, dies zu tun in Redis Kunde?

17voto

Gerard Punkte 4758

Wenn Sie den redis-rb gem verwenden, können Sie einfach aufrufen:

your_redis_client.flushdb

12voto

Kaidul Punkte 14621

Diese Methode hat bei mir funktioniert - löschen Sie alles von der aktuell verbundenen Datenbank auf Ihrem Jedi-Cluster.

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());
        }
    }

}

9voto

behzad babaei Punkte 921

Öffnen Sie redis-cli und geben Sie ein:

FLUSHALL

8voto

Denys Punkte 1094

Eine weitere Option von meiner Seite:

In unseren Produktions- und Vorproduktionsdatenbanken befinden sich Tausende von Schlüsseln. Von Zeit zu Zeit müssen wir einige Schlüssel (durch eine Maske) löschen, nach bestimmten Kriterien ändern usw. Natürlich gibt es keine Möglichkeit, dies manuell über CLI zu tun, vor allem, wenn wir Sharding haben (512 logische Datenbanken in jeder physischen).

Zu diesem Zweck schreibe ich ein Java-Client-Tool, das all diese Arbeit erledigt. Im Falle des Löschens von Schlüsseln kann das Dienstprogramm sehr einfach sein, es gibt nur eine Klasse:

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();
    }

}

Das Schreiben solcher Tools finde ich sehr einfach und dauert nicht länger als 5-10 Minuten.

7voto

arnabmitra Punkte 843

Verwenden Sie FLUSHALL ASYNC bei Verwendung von (Redis 4.0.0 oder höher) sonst FLUSHALL .

https://redis.io/commands/flushall

Hinweis : Alles vor der Ausführung FLUSHALL ASYNC vertrieben werden. Die Änderungen, die während der Ausführung von FLUSHALL ASYNC bleibt davon unberührt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X