web-dev-qa-db-ja.com

Redisの巨大なファイルは削除されませんか?

私はWindows( 2.8.4-MSOpenTech )/ windows 8 64ビット用のRedis-serverを使用しています。

それは素晴らしい仕事ですが、私が走った後でさえ:

enter image description here

私はこれを見ます:(そしてこれが私の質問です)

enter image description here

質問:

—すべてのDBを消去するように指示しただけではありませんか?では、なぜ2/3の巨大なファイルがまだ残っているのですか?これらのファイルを完全に消去するにはどうすればよいですか? (再生成なし)

NB占有スペースを解放せずにキーの削除を行っているようです。もしそうなら、どうすればこの未使用スペースを解放できますか?

24
Royi Namir

From https://github.com/MSOpenTech/redis/issues/8 "Redisは、fork()UNIXシステムAPIを使用して、ディスクへのストレージ用のデータストアのポイントインタイムスナップショットを作成します。これはRedisのいくつかの機能に影響を与えます:AOF/RDBバックアップ、マスタースレーブ同期、およびクラスタリング。WindowsにはフォークのようなAPIがないため、Redisヒープをメモリマップファイルに配置することでこの動作をシミュレートする必要がありましたchild(quasi-forked)プロセスと共有できます。デフォルトでは、このファイルのサイズを物理メモリのサイズと同じに設定します。このファイルのサイズを制御するために、maxheapフラグを追加しました。このフラグの使用方法の詳細については、msvs\setups\documentationのRedis.Windows.confファイル(NuGetおよびChocolateyディストリビューションにも含まれています)。

25
Deepak

これは古いスレッドであることはわかっていますが、ファイルサイズに関する同じ問題に直面しています。

C ssdドライブ(私のような)に問題がある場合は、ディレクトリジャンクションを作成できます。

1)redisサービスを停止する
2)C:\ Windows\ServiceProfiles\NetworkService\AppData\Local\Redisフォルダーを別のドライブ/場所に移動します。
3)C:\ Windows\ServiceProfiles\NetworkService\AppData\Localでコマンドプロンプトを開き、次を実行します。

mklink/J "C:\ Windows\ServiceProfiles\NetworkService\AppData\Local\Redis" "[newpath]"

PD:[newpath]は、「D:\ directory junctions\Redis」のように絶対パスでなければなりません

4)redisサービスを開始します。これで、ファイルは別のドライブにあります。

このコマンドについて疑問がある場合は、 http://ss64.com/nt/mklink.html を確認してください。

4
fabrosell

開発マシンでも同じ問題に直面しました。これは、redisサービスを停止することで解決し、WinDirStat(これは元々問題を検出するために使用したものです)を使用して、appdata/local/redisにあるこれらのファイルを完全に削除しました。

その後、redisのバックアップを開始したところ、問題はありませんでした。

この同じ手順を実行する前に、このデータが不要であることを他の人が確認したい場合があります。これは私の開発ワークステーションなので、私の場合はそれほど重要ではありませんでした。

2
Ryan Rentfro

DBをフラッシュするときは、メモリからキーのみをフラッシュします。なぜ別の名前のファイルがあるのか​​わかりません。これは、WindowsのRedisのポートの管理方法によるものかもしれませんが、キーを削除してもRedis自体はファイルを削除しません。 Redis外で古いファイルを管理する必要があります。

1
The Real Bill