sql >> データベース >  >> NoSQL >> Redis

500MBのRedisdump.rdbファイルが約5.0GBのメモリを必要とするのはなぜですか?

    ダンプサイズに対するメモリの比率は、Redisが内部で使用するデータ型によって異なります。

    小さなオブジェクト(ハッシュ、リスト、ソート済みセット)の場合、redisはziplistを使用してデータをエンコードします。整数で作成された小さなセットの場合、redisはIntsetを使用します。 ZipListsとIntSetsは、メモリに保存されているのと同じ形式でディスクに保存されます 。したがって、データでこれらのエンコーディングを使用する場合は、1:1の比率が期待されます。

    より大きなオブジェクトの場合、メモリ内の表現はディスク上の表現とは完全に異なります。ディスク上のフォーマットは圧縮されており、ポインタがなく、メモリの断片化を処理する必要がありません。したがって、オブジェクトが大きい場合、メモリとディスクの比率は10:1が正常であり、予想されます。

    どのオブジェクトがメモリを消費しているかを知りたい場合は、redis-rdb-toolsを使用してデータのプロファイルを作成してください(免責事項:私はこのツールの作成者です)。そこから、redis.ioのメモリ最適化ノートとredis-rdb-toolsのメモリ最適化wikiエントリに従ってください。



    1. Dockerコンテナ内のMongodb接続エラー

    2. MongoDB $ filter

    3. ハード障害が発生した場合に、redisクラスター内の特定のノードのハッシュスロットを再開するにはどうすればよいですか?

    4. MongoError:フィルターパラメーターはオブジェクトである必要があります