redis-cliを使うと:
Redisのドキュメント:
たとえば、あなたのシェルでは:
redis-cli flushall
redis-cli flushall
- Cmag(error) LOADING Redis is loading the dataset in memory
。その理由を教えてください。 - Ram Patra(new Process { StartInfo = new ProcessStartInfo { FileName = "redis-cli", Arguments = "flushall", CreateNoWindow = true }}).start();
- Christian-h
Redisサーバーの場所を指定するためのフラグ - Adam F
それをヘッズアップFLUSHALL
やり過ぎかもしれません。FLUSHDB
データベースのみをフラッシュするものです。FLUSHALL
サーバー全体を一掃します。サーバー上のすべてのデータベースと同じです。質問はデータベースをフラッシュすることに関するものだったので、これは別の答えに値するほど十分に重要な区別だと思います。
今のところ答えは絶対に正しいです。彼らはすべてのキーを削除します。
ただし、すべて削除したい場合取りますRedisインスタンスからスクリプトを作成する場合は、以下の手順に従ってください。
OPは2つの質問をします。これで2番目の質問は完了です(すべてのもの拭いた。
I want everything wiped out and give me a blank database.
質問もう。だから、私見、私の追加は良いもので、それは少数の人々を助けました。もちろん、同意しないこともお忘れなく。 - Tw Bert
もしあなたがredis-rb gemを使っているならば、あなたは単に呼ぶことができます:
your_redis_client.flushdb
フラッシュすべてのデータベースからすべてのキーを削除する
FLUSHDB現在のデータベースからすべてのキーを削除します
SCRIPT FLUSHスクリプトキャッシュからすべてのスクリプトを削除します。
この方法は私にはうまくいきました - あなたの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());
}
}
}
私の側からもう一つのオプション:
本番データベースおよび本番前データベースには、何千もの鍵があります。時々、いくつかのキーを(いくつかのマスクで)削除し、いくつかの基準などで変更する必要があります。もちろん、特にシャーディング(各物理で512論理DB)があるため、CLIから手動で行う方法はありません。
この目的のために、私はこれをすべて行うJavaクライアントツールを書きます。キーを削除する場合、ユーティリティは非常に単純なものになることがあります。1つのクラスだけがあります。
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();
}
}
そのような種類のツールを書くことは私が非常に簡単であると思い、そして5-10分以上を費やすことはありません。
FLUSHALL既存のすべてのデータベースのすべてのキーを削除します。 Redisバージョン4.0以降では、FLUSHALL ASYNCがサポートされ、サーバーをブロックすることなくバックグラウンドスレッドで実行されます。https://redis.io/commands/flushall
FLUSHDB - 選択したデータベース内のすべてのキーを削除します。https://redis.io/commands/flushdb
操作を実行するための時間の複雑さはO(N)になります。ここで、Nはデータベース内のキーの数です。
redisからの応答は単純な文字列 "OK"になります。
あなたはあなたのすべてのデータベースからすべてのキーを削除するFLUSHALLを使うことができます。 FLUSHDBは現在のデータベースからすべてのキーを削除します。
私は時々redis-serverを止めてrdb、aof filesを削除すると思います。 データを再ロードできないことを確認してください。 それから、redis-serverを起動してください。今、それは新しくて空です。
redis-cli -h <host> -p <port> flushall
接続されているクライアント(ホストとポート)からすべてのデータを削除します。
Redisサーバーを起動した後は、service redis-server start --port 8000
またはredis-server
。
つかいますredis-cli -p 8000
別の端末でクライアントとしてサーバーに接続します。
どちらでも使えます
のドキュメントを確認してください。ASYNC両方のためのオプション。
あなたがそのpythonインターフェースを通してRedisを使っているならば、同じ機能のためにこれらの2つの機能を使ってください:
def flushall(self):
"Delete all keys in all databases on the current host"
return self.execute_command('FLUSHALL')
そして
def flushdb(self):
"Delete all keys in the current database"
return self.execute_command('FLUSHDB')
redis-cliを開き、次のように入力します。
FLUSHALL
あなたの質問はデータベースのキー全体を削除することにあるようです。この場合、試すべきです:
redis-cli
(ポート6379で実行している場合)、それ以外の場合はポート番号も指定する必要があります。select {Index}
)flushdb
すべてのデータベースのキーをフラッシュしたい場合は、試してみてください。flushall
。
あなたがRDM(Redis Desktop Manager)を持つことができるならば、それはより良いです。 RDMで新しい接続を作成することによって、あなたのredisサーバーに接続することができます。
接続したら、ライブデータを確認できます。また、redisコマンドを使用して再生することもできます。
RDMでクリップを開く
1)接続を右クリックするとコンソールオプションが表示されます。クリックするとRDMの下部に新しいコンソールウィンドウが開きます。
あなたの質問に戻るFLUSHALLはコマンドです、あなたは単にredis cliにFLUSHALLをタイプすることができます。
さらに、redisコマンドとその正しい使い方について知りたい場合は、以下のリンクにアクセスしてください。https://redis.io/commands。
さまざまなアプローチがあります。リモートからこれを実行したい場合は、そのインスタンスにflushallを発行してください。コマンドラインツールのredis-cliまたは他のツール(telnet、プログラミング言語SDKなど)を使用してください。またはそのサーバーにログインし、プロセスを強制終了し、そのdump.rdbファイルを削除してappendonly.aof(削除する前にそれらをバックアップしてください)。
del *
動作しません。 0を返します。 - Chloe