Quando tento o acima, recebo o seguinte erro (error) LOADING Redis is loading the dataset in memory. Você pode especificar o porquê?
Ram Patra
4
@Ramswaroop - você reiniciou o Redis e atualmente está carregando dados do armazenamento persistente. Enquanto esse processo (carregando) estiver ativo, você não pode manipular o banco de dados. Aguarde o término ou configure o Redis sem persistência e reinicie-o (ele começará vazio, para que você não precise executar o FLUSHALL assim que estiver pronto).
Itamar Haber
@ ItamarHaber Obrigado pela ajuda, eu também descobri o mesmo.
Ram Patra
1
@Neo se você não tem uma biblioteca cliente Redis em C #, você pode simplesmente executar esse comando, assim: (new Process { StartInfo = new ProcessStartInfo { FileName = "redis-cli", Arguments = "flushall", CreateNoWindow = true }}).start();
Christian
2
Use o -hsinalizador para especificar um local de servidor redis
Adam F
194
Atenção que FLUSHALLpode ser um exagero. FLUSHDBé o único a liberar apenas um banco de dados. FLUSHALLirá destruir todo o servidor. Como em todos os bancos de dados no servidor. Como a pergunta era sobre liberar um banco de dados, acho que essa é uma distinção importante o suficiente para merecer uma resposta separada.
+1 de mim, eu pensei que esta era a melhor resposta, na verdade. É verdade que a pergunta do OP diz "limpe tudo", mas é seguida por "me dê um banco de dados em branco" - independentemente do que ele realmente quis dizer, acho que a distinção que você fez é útil, para dizer o mínimo.
doug
28
As respostas até agora estão absolutamente corretas; eles excluem todas as chaves.
No entanto, se você também deseja excluir todos os scripts Lua da instância Redis, siga-o:
Não, ele fez uma pergunta e nos dois anos desde então o escopo no Redis aumentou. A pergunta do OP foi especificamente sobre a exclusão de chaves. Você está respondendo a uma pergunta diferente desta.
O projeto de lei real
15
@TheRealBill Você precisa pensar no que é útil para os atuais e futuros leitores de SO. As respostas aqui não abordavam mais aI want everything wiped out and give me a blank database. pergunta do OP . Então, imho, minha adição é boa, o que ajudou algumas pessoas. Sinta-se à vontade para discordar, é claro, também é disso que se trata.
Bert
2
O contexto é tudo, e a primeira frase estabelece: "Quero excluir todas as chaves". Reescrever a pergunta para dar uma resposta diferente não é o que me dizem que SO é. Trata-se de fazer a pergunta dada - portanto, o sinalizador de moderação que indica a resposta em análise está respondendo a uma pergunta diferente. Mas as opiniões diferem.
The Real Bill
Se você estiver executando o servidor mesmo, a maneira mais rápida para limpar tudo é matar o servidor e reiniciá-lo (descobriu isso acidentalmente)
acutesoftware
18
FLUSHALL
Remova todas as chaves de todos os bancos de dados
FLUSHDB
Remover todas as chaves do banco de dados atual
Nos nossos bancos de dados de produção e pré-produção, existem milhares de chaves. Ocasionalmente, precisamos excluir algumas chaves (por alguma máscara), modificar por alguns critérios etc. É claro que não há como fazê-lo manualmente a partir da CLI, principalmente com sharding (512 dbs lógicos em cada físico).
Para esse propósito, escrevo a ferramenta cliente java que faz todo esse trabalho. No caso de exclusão de chaves, o utilitário pode ser muito simples, apenas uma 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();
}
}
Ao escrever esse tipo de ferramenta, acho muito fácil e não gasto mais que 5 a 10 minutos.
FLUSHALL Exclui todos os bancos de dados de Keys of All existentes. Para a versão Redis> 4.0, é suportado o FLUSHALL ASYNC, que é executado em um encadeamento em segundo plano sem bloquear o servidor
https://redis.io/commands/flushall
Você pode usar o FLUSHALL, que excluirá todas as chaves de todos os seus bancos de dados. Onde FLUSHDB excluirá todas as chaves do nosso banco de dados atual.
Na minha experiência, se você tiver persistência, realmente deve seguir este procedimento + também excluir qualquer arquivo .aof + issue redis-cli flushall, para realmente remover tudo.
ywarnier
4
Use FLUSHALL ASYNCse estiver usando (Redis 4.0.0 ou superior) mais FLUSHALL.
Embora sua postagem possa responder à pergunta, falta alguma documentação. Edite sua resposta e forneça-as.
hellow
2
acho que às vezes para o redis-server e exclui rdb (aof files), verifique se não há dados que possam ser recarregados. depois inicie o redis-server, agora está novo e vazio.
Depois de iniciar o servidor Redis usando: service redis-server start --port 8000ou redis-server.
Use redis-cli -p 8000para se conectar ao servidor como um cliente em um terminal diferente.
Você pode usar
FLUSHDB - Exclua todas as chaves do banco de dados selecionado no momento. Este comando nunca falha. A complexidade de tempo para esta operação é O (N), N sendo o número de chaves no banco de dados.
FLUSHALL - Exclua todas as chaves de todos os bancos de dados existentes, não apenas o atualmente selecionado. Este comando nunca falha. A complexidade de tempo para esta operação é O (N), N sendo o número de chaves em todos os bancos de dados existentes.
Verifique a documentação para a opção ASYNC para ambos.
Se você estiver usando o Redis através de sua interface python, use estas duas funções para a mesma funcionalidade:
def flushall(self):
"Delete all keys in all databases on the current host"
return self.execute_command('FLUSHALL')
e
def flushdb(self):
"Delete all keys in the current database"
return self.execute_command('FLUSHDB')
Suas perguntas parecem ser sobre a exclusão de chaves inteiras em um banco de dados. Nesse caso, você deve tentar:
Conecte-se ao redis. Você pode usar o comando redis-cli(se estiver executando na porta 6379); caso contrário, também precisará especificar o número da porta.
Selecione seu banco de dados (comando select {Index})
Execute o comando flushdb
Se você deseja liberar chaves em todos os bancos de dados, tente flushall.
É melhor se você pode ter RDM (Redis Desktop Manager). Você pode se conectar ao seu servidor redis criando uma nova conexão no RDM.
Uma vez conectado, você pode verificar os dados ao vivo, também pode brincar com qualquer comando redis.
Abrindo um CLI no RDM.
1) Clique com o botão direito do mouse na conexão em que você verá uma opção de console; basta clicar nela; uma nova janela do console será aberta na parte inferior do RDM.
Voltando à sua pergunta FLUSHALL é o comando, você pode simplesmente digitar FLUSHALL no redis cli.
Além disso, se você quiser saber sobre qualquer comando redis e seu uso adequado, acesse o link abaixo.
https://redis.io/commands .
Existem abordagens diferentes. Se você quiser fazer isso de forma remota, emita o comando flushall para essa instância, por meio da ferramenta de linha de comando redis-cli ou de qualquer outra ferramenta, por exemplo, telnet, um SDK da linguagem de programação. Ou simplesmente faça login no servidor, interrompa o processo, exclua seu arquivo dump.rdb e appendonly.aof (faça backup deles antes da exclusão).
Se você estiver usando Java e, a partir da documentação, poderá usar qualquer um deles com base no seu caso de uso.
/**
* 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();
Código:
RedisAdvancedClusterCommands syncCommands = // get sync() or async() commands
syncCommands.flushdb();
del *
que não funciona. Retorna 0.Respostas:
Com redis-cli:
Por exemplo, no seu shell:
fonte
(error) LOADING Redis is loading the dataset in memory
. Você pode especificar o porquê?(new Process { StartInfo = new ProcessStartInfo { FileName = "redis-cli", Arguments = "flushall", CreateNoWindow = true }}).start();
-h
sinalizador para especificar um local de servidor redisAtenção que
FLUSHALL
pode ser um exagero.FLUSHDB
é o único a liberar apenas um banco de dados.FLUSHALL
irá destruir todo o servidor. Como em todos os bancos de dados no servidor. Como a pergunta era sobre liberar um banco de dados, acho que essa é uma distinção importante o suficiente para merecer uma resposta separada.fonte
As respostas até agora estão absolutamente corretas; eles excluem todas as chaves.
No entanto, se você também deseja excluir todos os scripts Lua da instância Redis, siga-o:
SCRIPT FLUSH
O OP faz duas perguntas; isso completa a segunda pergunta ( tudo apagado).
fonte
I want everything wiped out and give me a blank database.
pergunta do OP . Então, imho, minha adição é boa, o que ajudou algumas pessoas. Sinta-se à vontade para discordar, é claro, também é disso que se trata.FLUSHALL Remova todas as chaves de todos os bancos de dados
FLUSHDB Remover todas as chaves do banco de dados atual
DESCARGA DE SCRIPT Remova todos os scripts do cache de scripts.
fonte
Se você estiver usando a gema redis-rb, basta ligar para:
fonte
Esse método funcionou para mim - exclua tudo do banco de dados conectado atual no seu cluster Jedis.
fonte
Mais uma opção do meu lado:
Nos nossos bancos de dados de produção e pré-produção, existem milhares de chaves. Ocasionalmente, precisamos excluir algumas chaves (por alguma máscara), modificar por alguns critérios etc. É claro que não há como fazê-lo manualmente a partir da CLI, principalmente com sharding (512 dbs lógicos em cada físico).
Para esse propósito, escrevo a ferramenta cliente java que faz todo esse trabalho. No caso de exclusão de chaves, o utilitário pode ser muito simples, apenas uma classe:
Ao escrever esse tipo de ferramenta, acho muito fácil e não gasto mais que 5 a 10 minutos.
fonte
FLUSHALL Exclui todos os bancos de dados de Keys of All existentes. Para a versão Redis> 4.0, é suportado o FLUSHALL ASYNC, que é executado em um encadeamento em segundo plano sem bloquear o servidor https://redis.io/commands/flushall
FLUSHDB - Exclui todas as chaves no banco de dados selecionado. https://redis.io/commands/flushdb
A complexidade do tempo para executar as operações será O (N), onde N é o número de chaves no banco de dados.
A resposta dos redis será uma sequência simples "OK"
fonte
Você pode usar o FLUSHALL, que excluirá todas as chaves de todos os seus bancos de dados. Onde FLUSHDB excluirá todas as chaves do nosso banco de dados atual.
fonte
fonte
Use
FLUSHALL ASYNC
se estiver usando (Redis 4.0.0 ou superior) maisFLUSHALL
.https://redis.io/commands/flushall
Nota : Tudo antes da execução
FLUSHALL ASYNC
será despejado. As alterações feitas durante a execuçãoFLUSHALL ASYNC
permanecerão inalteradas.fonte
Abra redis-cli e digite:
fonte
acho que às vezes para o redis-server e exclui rdb (aof files), verifique se não há dados que possam ser recarregados. depois inicie o redis-server, agora está novo e vazio.
fonte
redis-cli -h <host> -p <port> flushall
Ele removerá todos os dados do cliente conectado (com host e porta)
fonte
Depois de iniciar o servidor Redis usando:
service redis-server start --port 8000
ouredis-server
.Use
redis-cli -p 8000
para se conectar ao servidor como um cliente em um terminal diferente.Você pode usar
Verifique a documentação para a opção ASYNC para ambos.
Se você estiver usando o Redis através de sua interface python, use estas duas funções para a mesma funcionalidade:
e
fonte
Suas perguntas parecem ser sobre a exclusão de chaves inteiras em um banco de dados. Nesse caso, você deve tentar:
redis-cli
(se estiver executando na porta 6379); caso contrário, também precisará especificar o número da porta.select {Index}
)flushdb
Se você deseja liberar chaves em todos os bancos de dados, tente
flushall
.fonte
Um clique em FastoRedis / FastoNoSQL
fonte
Você pode usar
FLUSHDB
por exemplo
Listar bancos de dados:
Chaves de lista
Adicione um valor a uma chave
Crie outra chave com dois valores
Listar todos os valores na chave2
Faça FLUSHDB
Listar chaves e bancos de dados
fonte
você pode usar a seguinte abordagem em python
fonte
É melhor se você pode ter RDM (Redis Desktop Manager). Você pode se conectar ao seu servidor redis criando uma nova conexão no RDM.
Uma vez conectado, você pode verificar os dados ao vivo, também pode brincar com qualquer comando redis.
Abrindo um CLI no RDM.
1) Clique com o botão direito do mouse na conexão em que você verá uma opção de console; basta clicar nela; uma nova janela do console será aberta na parte inferior do RDM.
Voltando à sua pergunta FLUSHALL é o comando, você pode simplesmente digitar FLUSHALL no redis cli.
Além disso, se você quiser saber sobre qualquer comando redis e seu uso adequado, acesse o link abaixo. https://redis.io/commands .
fonte
Existem abordagens diferentes. Se você quiser fazer isso de forma remota, emita o comando flushall para essa instância, por meio da ferramenta de linha de comando redis-cli ou de qualquer outra ferramenta, por exemplo, telnet, um SDK da linguagem de programação. Ou simplesmente faça login no servidor, interrompa o processo, exclua seu arquivo dump.rdb e appendonly.aof (faça backup deles antes da exclusão).
fonte
Se você estiver usando Java e, a partir da documentação, poderá usar qualquer um deles com base no seu caso de uso.
Código:
Leia mais: https://github.com/lettuce-io/lettuce-core/wiki/Redis-Cluster
fonte