web-dev-qa-db-fra.com

Comment puis-je supprimer tout dans Redis?

Je veux supprimer toutes les clés. Je veux tout effacer et me donner une base de données vierge. 

Y a-t-il un moyen de faire cela dans Redis client?

641
TIMEX

Avec redis-cli:

  • FLUSHDB - Supprime les données de la base de données CURRENT de votre connexion.
  • FLUSHALL - Supprime les données de TOUTES les bases de données.

Documentation Redis:

Par exemple, dans votre shell: 

redis-cli flushall
1080
Javier

Notez que FLUSHALL est peut-être excessif. FLUSHDB est le seul à vider une base de données. FLUSHALL effacera tout le serveur. Comme dans toutes les bases de données sur le serveur. Comme il s’agissait de vider une base de données, j’estime que cette distinction est suffisamment importante pour mériter une réponse distincte.

179
The Real Bill

Les réponses jusqu'à présent sont absolument correctes. ils suppriment toutes les clés.

Toutefois, si vous souhaitez également supprimer tous les scripts Lua de l’instance Redis, vous devez le suivre:

SCRIPT FLUSH

Le PO pose deux questions. ceci termine la deuxième question (tout effacé).

27
Tw Bert

Si vous utilisez le joyau redis-rb, vous pouvez simplement appeler:

your_redis_client.flushdb
15
Ger

FLUSHALL Supprime toutes les clés de toutes les bases de données

FLUSHDB Supprimer toutes les clés de la base de données actuelle

SCRIPT FLUSH Supprimez tous les scripts du cache de scripts.

12
Jain Rach

Cette méthode a fonctionné pour moi - supprimez tout ce qui concerne la base de données connectée actuelle sur votre cluster 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());
        }
    }

}
9
Kaidul

Une autre option de mon côté:

Nos bases de données de production et de pré-production contiennent des milliers de clés. De temps en temps, nous devons supprimer certaines clés (par un masque), les modifier selon certains critères, etc. Bien sûr, il n’est pas possible de le faire manuellement à partir de la CLI, en particulier en ayant un partage (512 dbs logiques par physique).

À cette fin, j'écris un outil client Java qui effectue tout ce travail. En cas de suppression de clés, l'utilitaire peut être très simple, avec une seule classe:

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

}

Ecrire ce genre d’outils me semble très facile et ne dépense pas plus de 5-10 min.

6
Denys

FLUSHALL Supprime toutes les clés de toutes les bases de données existantes . POUR Redis version> 4.0, FLUSHALL ASYNC est pris en charge et s’exécute dans un thread d’arrière-plan sans bloquer le serveur https://redis.io/commands/flushall

FLUSHDB - Supprime toutes les clés de la base de données sélectionnée. https://redis.io/commands/flushdb

La complexité temporelle pour effectuer les opérations sera O(N), N étant le nombre de clés de la base de données.

La réponse du redis sera une simple chaîne "OK"

5
athavan kanapuli

Utilisez FLUSHALL ASYNC si vous utilisez (Redis 4.0.0 ou version ultérieure) sinon FLUSHALL

https://redis.io/commands/flushall

4
arnabmitra

Vous pouvez utiliser FLUSHALL qui supprimera toutes les clés de votre base de données . Where, en tant que FLUSHDB, supprimera toutes les clés de notre base de données actuelle.

4
justbegancoding
  1. Arrêtez l'instance Redis.
  2. Supprimer le fichier RDB.
  3. Démarrer l'instance Redis.
3
Denys

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

Il supprimera toutes les données du client connecté (avec l'hôte et le port)

2
gobi

je pense que parfois, arrêtez le serveur redis et supprime rdb。 aof of r assurez-vous qu’aucune donnée ne peut être rechargée ..__ puis démarrez le serveur redis, il est maintenant nouveau et vide.

2
tcrabsheen

Après avoir démarré le serveur Redis, utilisez: service redis-server start --port 8000 ou redis-server.

Utilisez redis-cli -p 8000 pour vous connecter au serveur en tant que client d'un autre terminal.

Vous pouvez utiliser soit 

  1. FLUSHDB- Supprime toutes les clés du DB actuellement sélectionné. Cette commande n'échoue jamais. La complexité temporelle de cette opération est O (N), N étant le nombre de clés dans la base de données.
  2. FLUSHALL- Supprime toutes les clés de toutes les bases de données existantes, pas uniquement celle actuellement sélectionnée. Cette commande n'échoue jamais. La complexité temporelle de cette opération est O (N), N étant le nombre de clés dans toutes les bases de données existantes.

Consultez la documentation pourASYNCoption pour les deux.

Si vous utilisez Redis via son interface python, utilisez ces deux fonctions pour la même fonctionnalité: 

def flushall(self):
    "Delete all keys in all databases on the current Host"
    return self.execute_command('FLUSHALL')

et

def flushdb(self):
    "Delete all keys in the current database"
    return self.execute_command('FLUSHDB')
1
Archit Singh

Ouvrez redis-cli et tapez:

FLUSHALL
1
behzad babaei

Vos questions semblent concerner la suppression de clés entières dans une base de données. Dans ce cas, vous devriez essayer:

  1. Connectez-vous à redis. Vous pouvez utiliser la commande redis-cli (si vous utilisez le port 6379), sinon vous devrez également spécifier le numéro de port.
  2. Sélectionnez votre base de données (commande select {Index})
  3. Exécutez la commande flushdb

Si vous souhaitez vider les clés de toutes les bases de données, essayez flushall.

0
Raviraj Singh

Il y a différentes approches. Si vous souhaitez effectuer cette opération à distance, envoyez flushall à cette instance, via l'outil de ligne de commande redis-cli ou tout autre outil, tel que telnet, un langage de programmation SDK. Ou connectez-vous simplement à ce serveur, tuez le processus, supprimez son fichier dump.rdb et appendonly.aof (sauvegardez-les avant la suppression).

0

Vous pouvez utiliser FLUSHDB

par exemple

Liste des bases de données:

127.0.0.1:6379> info keyspace
# Keyspace

Liste des clés

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

Ajouter une valeur à une clé

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

Créer une autre clé avec deux valeurs

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

Répertorie toutes les valeurs dans key2

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

Do_ FLUSHDB

127.0.0.1:6379> flushdb
OK

Liste des clés et des bases de données

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

Un clic dans FastoRedis / FastoNoSQL

 enter image description here

0
Topilski Alexandr

Si vous utilisez Java , vous pouvez utiliser l'un de ces documents en fonction de votre cas d'utilisation.

/**
 * 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();

Code:

RedisAdvancedClusterCommands syncCommands = // get sync() or async() commands 
syncCommands.flushdb();

En savoir plus: https://github.com/lettuce-io/lettuce-core/wiki/Redis-Cluster

0
roottraveller

C'est mieux si vous pouvez avoir RDM (Redis Desktop Manager) . Vous pouvez vous connecter à votre serveur Redis en créant une nouvelle connexion dans RDM.

Une fois connecté, vous pouvez consulter les données en direct et jouer avec n’importe quelle commande redis.

Ouverture d'un cli en RDM.

1) Faites un clic droit sur la connexion pour voir une option de console, cliquez simplement dessus, une nouvelle fenêtre de console s’ouvrira au bas de RDM.

Pour revenir à votre question, FLUSHALL est la commande, vous pouvez simplement taper FLUSHALL dans le redis cli.

De plus, si vous souhaitez en savoir plus sur une commande redis et son utilisation correcte, cliquez sur le lien ci-dessous . https://redis.io/commands .

0
Manvendra Jina