Lorsque j'essaie ce qui précède, j'obtiens l'erreur suivante (error) LOADING Redis is loading the dataset in memory. Pouvez-vous préciser pourquoi?
Ram Patra
4
@Ramswaroop - vous avez redémarré Redis et il charge actuellement les données du stockage persistant. Tant que ce processus (chargement) est actif, vous ne pouvez pas manipuler la base de données. Soit attendez qu'il se termine, soit configurez Redis sans persistance et redémarrez-le (il commencera à vide, vous n'aurez donc pas besoin de faire FLUSHALL une fois qu'il sera terminé).
Itamar Haber
@ItamarHaber Merci pour l'aide, moi aussi j'ai compris la même chose.
Ram Patra
1
@Neo si vous n'avez pas de bibliothèque cliente redis en C #, vous pouvez simplement exécuter cette commande, comme ceci: (new Process { StartInfo = new ProcessStartInfo { FileName = "redis-cli", Arguments = "flushall", CreateNoWindow = true }}).start();
Christian
2
Utilisez l' -hindicateur pour spécifier un emplacement de serveur redis
Adam F
194
Attention qui FLUSHALLpeut être exagéré. FLUSHDBest le seul à vider une base de données. FLUSHALLeffacera tout le serveur. Comme dans toutes les bases de données du serveur. Étant donné que la question portait sur le vidage d'une base de données, je pense que c'est une distinction suffisamment importante pour mériter une réponse distincte.
+1 de moi, je pensais que c'était la meilleure réponse en fait. Certes, la question du PO dit "effacez tout" mais cela est suivi de "donnez-moi une base de données vierge" - peu importe ce qu'il voulait réellement dire, je pense que la distinction que vous avez faite est utile, c'est le moins que l'on puisse dire.
doug
28
Jusqu'à présent, les réponses sont absolument correctes; ils suppriment toutes les clés.
Cependant, si vous souhaitez également supprimer tous les Lua scripts de l'instance Redis, vous devez le suivre en:
Non, il a posé une question et au cours des deux années écoulées depuis, la portée de Redis a augmenté. La question du PO concernait spécifiquement la suppression de clés. Vous répondez à une question différente de celle-ci.
The Real Bill
15
@TheRealBill Vous devez réfléchir à ce qui est utile pour les lecteurs SO actuels et futurs. Les réponses ici ne répondaient pas de l'OP I want everything wiped out and give me a blank database.question plus . Donc, mon humble avis, mon ajout est bon, ce qui a aidé quelques personnes. N'hésitez pas à être en désaccord bien sûr, c'est aussi de cela qu'il s'agit.
Tw Bert
2
Le contexte est tout, et la première phrase l'établit: "Je veux supprimer toutes les clés". Réécrire la question pour donner une réponse différente n'est pas ce dont on me dit qu'il s'agit de SO. Il s'agit de poser la question posée - d'où l'indicateur de modération indiquant que la réponse à l'étude répond à une question différente. Mais les opinions divergent.
The Real Bill
Si vous exécutez le serveur vous-même, le moyen le plus rapide de tout effacer est de tuer le serveur et de le redémarrer (découvert accidentellement)
acutesoftware
18
FLUSHALL
Supprimer 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.
Dans nos bases de données de production et de pré-production, il y a 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'y a aucun moyen de le faire manuellement à partir de la CLI, en particulier avec le partage (512 dbs logiques dans chaque physique).
Dans ce but, j'écris un outil client java qui fait tout ce travail. En cas de suppression de clés, l'utilitaire peut être très simple, il n'y a qu'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();
}
}
Écrire ce genre d'outils me semble très facile et ne passe pas plus de 5 à 10 minutes.
FLUSHALL Supprime toutes les bases de données existantes de Keys of All. 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
Vous pouvez utiliser FLUSHALL qui supprimera toutes les clés de chacune de vos bases de données. Où FLUSHDB supprimera toutes les clés de notre base de données actuelle.
D'après mon expérience, si vous avez de la persévérance, vous devez en effet suivre cette procédure + supprimer également tout fichier .aof + problème redis-cli flushall, pour vraiment tout supprimer.
ywarnier il y a
4
À utiliser FLUSHALL ASYNCsi vous utilisez (Redis 4.0.0 ou supérieur) autrement FLUSHALL.
Bien que votre message puisse répondre à la question, il manque de documentation. Veuillez modifier votre réponse et la fournir.
hellow
2
je pense que parfois arrêter le redis-server et supprimer rdb r aof fichiers。 assurez-vous qu'il n'y a pas de données pouvant être rechargées. puis démarrez le serveur redis, maintenant il est nouveau et vide.
Après avoir démarré le serveur Redis à l'aide de: service redis-server start --port 8000ou redis-server.
Permet redis-cli -p 8000de se connecter au serveur en tant que client dans un autre terminal.
Vous pouvez utiliser soit
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.
FLUSHALL - Supprimez toutes les clés de toutes les bases de données existantes, pas seulement 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 de l' option ASYNC 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')
Vos questions semblent concerner la suppression de clés entières dans une base de données. Dans ce cas, vous devez essayer:
Connectez-vous à redis. Vous pouvez utiliser la commande redis-cli(si elle s'exécute sur le port 6379), sinon vous devrez également spécifier le numéro de port.
Sélectionnez votre base de données (commande select {Index})
Exécutez la commande flushdb
Si vous souhaitez vider les clés de toutes les bases de données, essayez flushall.
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 vérifier les données en direct, vous pouvez également jouer avec n'importe quelle commande redis.
Ouverture d'un cli dans RDM.
1) Faites un clic droit sur la connexion, vous verrez une option de console, cliquez simplement dessus, une nouvelle fenêtre de console s'ouvrira en 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 appropriée, cliquez sur le lien ci-dessous.
https://redis.io/commands .
Il existe différentes approches. Si vous souhaitez le faire à distance, lancez flushall vers cette instance, via l'outil de ligne de commande redis-cli ou tout autre outil tel que telnet, un SDK de langage de programmation. Ou connectez-vous simplement à ce serveur, supprimez le processus, supprimez son fichier dump.rdb et appendonly.aof (sauvegardez-les avant la suppression).
Si vous utilisez Java, puis à partir de la documentation, vous pouvez utiliser l'un d'eux 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();
del *
ça ne marche pas. Il renvoie 0.Réponses:
Avec redis-cli:
Par exemple, dans votre shell:
la source
(error) LOADING Redis is loading the dataset in memory
. Pouvez-vous préciser pourquoi?(new Process { StartInfo = new ProcessStartInfo { FileName = "redis-cli", Arguments = "flushall", CreateNoWindow = true }}).start();
-h
indicateur pour spécifier un emplacement de serveur redisAttention qui
FLUSHALL
peut être exagéré.FLUSHDB
est le seul à vider une base de données.FLUSHALL
effacera tout le serveur. Comme dans toutes les bases de données du serveur. Étant donné que la question portait sur le vidage d'une base de données, je pense que c'est une distinction suffisamment importante pour mériter une réponse distincte.la source
Jusqu'à présent, les réponses sont absolument correctes; ils suppriment toutes les clés.
Cependant, si vous souhaitez également supprimer tous les Lua scripts de l'instance Redis, vous devez le suivre en:
SCRIPT FLUSH
Le PO pose deux questions; ceci termine la deuxième question ( tout effacé).
la source
I want everything wiped out and give me a blank database.
question plus . Donc, mon humble avis, mon ajout est bon, ce qui a aidé quelques personnes. N'hésitez pas à être en désaccord bien sûr, c'est aussi de cela qu'il s'agit.FLUSHALL Supprimer 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.
la source
Si vous utilisez la gemme redis-rb, vous pouvez simplement appeler:
la source
Cette méthode a fonctionné pour moi - supprimez tout de la base de données connectée actuelle sur votre cluster Jedis.
la source
Une option de plus de mon côté:
Dans nos bases de données de production et de pré-production, il y a 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'y a aucun moyen de le faire manuellement à partir de la CLI, en particulier avec le partage (512 dbs logiques dans chaque physique).
Dans ce but, j'écris un outil client java qui fait tout ce travail. En cas de suppression de clés, l'utilitaire peut être très simple, il n'y a qu'une seule classe:
Écrire ce genre d'outils me semble très facile et ne passe pas plus de 5 à 10 minutes.
la source
FLUSHALL Supprime toutes les bases de données existantes de Keys of All. 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) où N étant le nombre de clés dans la base de données.
La réponse du redis sera une simple chaîne "OK"
la source
Vous pouvez utiliser FLUSHALL qui supprimera toutes les clés de chacune de vos bases de données. Où FLUSHDB supprimera toutes les clés de notre base de données actuelle.
la source
la source
À utiliser
FLUSHALL ASYNC
si vous utilisez (Redis 4.0.0 ou supérieur) autrementFLUSHALL
.https://redis.io/commands/flushall
Remarque : Tout avant l'exécution
FLUSHALL ASYNC
sera expulsé. Les modifications apportées lors de l'exécutionFLUSHALL ASYNC
ne seront pas affectées.la source
Ouvrez redis-cli et tapez:
la source
je pense que parfois arrêter le redis-server et supprimer rdb r aof fichiers。 assurez-vous qu'il n'y a pas de données pouvant être rechargées. puis démarrez le serveur redis, maintenant il est nouveau et vide.
la source
redis-cli -h <host> -p <port> flushall
Il supprimera toutes les données du client connecté (avec l'hôte et le port)
la source
Après avoir démarré le serveur Redis à l'aide de:
service redis-server start --port 8000
ouredis-server
.Permet
redis-cli -p 8000
de se connecter au serveur en tant que client dans un autre terminal.Vous pouvez utiliser soit
Consultez la documentation de l' option ASYNC pour les deux.
Si vous utilisez Redis via son interface python, utilisez ces deux fonctions pour la même fonctionnalité:
et
la source
Vos questions semblent concerner la suppression de clés entières dans une base de données. Dans ce cas, vous devez essayer:
redis-cli
(si elle s'exécute sur le port 6379), sinon vous devrez également spécifier le numéro de port.select {Index}
)flushdb
Si vous souhaitez vider les clés de toutes les bases de données, essayez
flushall
.la source
Un clic dans FastoRedis / FastoNoSQL
la source
Vous pouvez utiliser
FLUSHDB
par exemple
Liste des bases de données:
Liste des clés
Ajouter une valeur à une clé
Créer une autre clé avec deux valeurs
Liste toutes les valeurs dans key2
Do FLUSHDB
Liste des clés et des bases de données
la source
vous pouvez utiliser l'approche suivante en python
la source
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 vérifier les données en direct, vous pouvez également jouer avec n'importe quelle commande redis.
Ouverture d'un cli dans RDM.
1) Faites un clic droit sur la connexion, vous verrez une option de console, cliquez simplement dessus, une nouvelle fenêtre de console s'ouvrira en 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 appropriée, cliquez sur le lien ci-dessous. https://redis.io/commands .
la source
Il existe différentes approches. Si vous souhaitez le faire à distance, lancez flushall vers cette instance, via l'outil de ligne de commande redis-cli ou tout autre outil tel que telnet, un SDK de langage de programmation. Ou connectez-vous simplement à ce serveur, supprimez le processus, supprimez son fichier dump.rdb et appendonly.aof (sauvegardez-les avant la suppression).
la source
Si vous utilisez Java, puis à partir de la documentation, vous pouvez utiliser l'un d'eux en fonction de votre cas d'utilisation.
Code:
En savoir plus: https://github.com/lettuce-io/lettuce-core/wiki/Redis-Cluster
la source