query - ¿Cómo borro todo en Redis?
redis query all keys (18)
- Detener la instancia de redis.
- Eliminar archivo RDB.
- Iniciar la instancia de redis.
Quiero borrar todas las claves. Quiero que todo se borre y dame una base de datos en blanco.
¿Hay alguna manera de hacer esto en el cliente de Redis ?
A la FLUSHALL
que FLUSHALL
puede ser una exageración. FLUSHDB
es la única para vaciar una base de datos. FLUSHALL
borrará todo el servidor. Como en todas las bases de datos del servidor. Dado que la pregunta era acerca de vaciar una base de datos, creo que esta es una distinción lo suficientemente importante como para merecer una respuesta por separado.
Abre redis-cli y escribe:
FLUSHALL
Creo que a veces detiene el servidor redis y borra rdb , aof of files。 asegúrese de que no haya datos que puedan recargarse. a continuación, inicie el servidor redis, ahora es nuevo y está vacío.
Después de iniciar el servidor Redis con: service redis-server start --port 8000
o redis-server
.
Use redis-cli -p 8000
para conectarse al servidor como cliente en una terminal diferente.
Puedes usar cualquiera
- FLUSHDB - Borrar todas las claves de la base de datos seleccionada actualmente. Este comando nunca falla. La complejidad del tiempo para esta operación es O (N), siendo N el número de claves en la base de datos.
- FLUSHALL : elimine todas las claves de todas las bases de datos existentes, no solo la seleccionada actualmente. Este comando nunca falla. La complejidad del tiempo para esta operación es O (N), siendo N el número de claves en todas las bases de datos existentes.
Consulte la documentación para la opción ASYNC para ambos.
Si está utilizando Redis a través de su interfaz de Python, use estas dos funciones para la misma funcionalidad:
def flushall(self):
"Delete all keys in all databases on the current host"
return self.execute_command(''FLUSHALL'')
y
def flushdb(self):
"Delete all keys in the current database"
return self.execute_command(''FLUSHDB'')
Es mejor si puedes tener RDM (Redis Desktop Manager). Puede conectarse a su servidor redis creando una nueva conexión en RDM.
Una vez que esté conectado, puedes verificar los datos en vivo, y también puedes jugar con cualquier comando redis.
Abriendo un cli en RDM.
1) Haga clic derecho en la conexión, verá una opción de consola, simplemente haga clic en ella y se abrirá una nueva ventana de consola en la parte inferior de RDM.
Volviendo a su pregunta, FLUSHALL es el comando, simplemente puede escribir FLUSHALL en el redis cli.
Además, si desea saber sobre cualquier comando redis y su uso adecuado, vaya al enlace a continuación. https://redis.io/commands .
Este método funcionó para mí: elimine toda la base de datos conectada actual de su grupo 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());
}
}
}
FLUSHALL Borra todas las claves de todas las bases de datos existentes. Para la versión Redis> 4.0, se admite FLUSHALL ASYNC, que se ejecuta en un subproceso en segundo plano sin bloqueo del servidor https://redis.io/commands/flushall
FLUSHDB: elimina todas las claves de la base de datos seleccionada. https://redis.io/commands/flushdb
La complejidad del tiempo para realizar las operaciones será O (N) donde N es el número de claves en la base de datos.
La Respuesta del redis será una simple cadena "OK"
Hay diferentes enfoques. Si desea hacer esto desde un lugar remoto, envíe flushall a esa instancia, a través de la línea de comandos redis-cli o cualquier otra herramienta, por ejemplo, telnet, un lenguaje de programación SDK. O simplemente inicie sesión en ese servidor, finalice el proceso, elimine su archivo dump.rdb y appendonly.aof (haga una copia de seguridad de ellos antes de eliminarlos).
Las respuestas hasta ahora son absolutamente correctas; se eliminan todas las claves.
Sin embargo, si también desea eliminar todos los scripts Lua de la instancia de Redis, debe seguirlo por:
El OP hace dos preguntas; Esto completa la segunda pregunta ( todo borrado).
Puede usar FLUSHALL que eliminará todas las claves de todas sus bases de datos. Donde FLUSHDB eliminará todas las claves de nuestra base de datos actual.
Si está utilizando la gema redis-rb, simplemente puede llamar al:
your_redis_client.flushdb
Sus preguntas parecen ser sobre eliminar claves completas en una base de datos. En este caso deberías probar:
- Conectar a redis. Puede usar el comando
redis-cli
(si se ejecuta en el puerto 6379), de lo contrario también deberá especificar el número de puerto. - Seleccione su base de datos (comando
select {Index}
) - Ejecuta el comando
flushdb
Si desea vaciar las claves en todas las bases de datos, debe probar con flushall
.
Una opción más de mi lado:
En nuestras bases de datos de producción y preproducción hay miles de claves. De vez en cuando necesitamos eliminar algunas claves (por alguna máscara), modificarlas según algún criterio, etc. Por supuesto, no hay forma de hacerlo manualmente desde CLI, especialmente con fragmentación (512 dbs lógicas en cada examen físico).
Para ello escribo una herramienta de cliente java que hace todo este trabajo. En caso de eliminación de claves, la utilidad puede ser muy simple, solo una clase allí:
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();
}
}
Escribo este tipo de herramientas que encuentro muy fáciles y no gasto más de 5-10 minutos.
Use FLUSHALL ASYNC si usa (Redis 4.0.0 o superior) de lo contrario FLUSHALL
flushall Eliminar todas las claves de todas las bases de datos
flushdb Eliminar todas las claves de la base de datos actual
SCRIPT FLUSH Elimina todos los scripts del caché de script.
redis-cli -h <host> -p <port> flushall
Se eliminarán todos los datos del cliente conectado (con el host y el puerto)