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

メモリが不足した場合、Redisは何をしますか?

    仮想メモリ機能をオンにしている場合(編集:非推奨 )、メモリがなくなると、Redisは「あまり使用されない」データをディスクに保存し始めます。

    Redisの仮想メモリが無効になっている場合(デフォルト)、maxmemory パラメータが設定されている場合(デフォルト)、Redisはmaxmemoryより多くのメモリを使用しません 許可します。 maxmemoryを回すと オフにすると、Redisは仮想メモリ(つまりスワップ)の使用を開始し、パフォーマンスが大幅に低下します。

    maxmemoryの場合、Redisの新しいバージョンにはさまざまなポリシーがあります 到達:

    • volatile-lru -有効期限が設定されているキーを削除し、最近使用されていないキーを削除しようとします。
    • volatile-ttl -有効期限が設定されているキーを削除し、残り時間が短いキーを削除しようとします。
    • volatile-random -有効期限が設定されているキーの中からランダムなキーを削除します。
    • allkeys-lru --like volatile-lru 、ただし、通常のキーまたは有効期限が設定されたキーの両方のすべての種類のキーが削除されます。
    • allkeys-random -volatile-randomのように 、ただし、通常のキーと有効期限が設定されたキーの両方のすべての種類のキーが削除されます。

    EXPIREが設定されたキーのみを削除するポリシーを選択した場合、Redisのメモリが不足すると、プログラムはmalloc()操作を中止したように見えます。つまり、より多くのデータを保存しようとすると、書き込み操作は単に失敗します。

    詳細については、いくつかのリンクをご覧ください:

    • http://antirez.com/post/redis-as-LRU-cache.html
    • http://eli.thegreenplace.net/2009/10/30/handling-out-of-memory-conditions-in-c/


    1. キーを削除するにはどうすればよいですか?

    2. 大量の挿入/書き込みに最適なnoSQLデータベースはどれですか?

    3. フラスコを起動する前に(起動していない場合は起動して)、redisが実行されているかどうかを確認するにはどうすればよいですか?

    4. mongodbアグリゲートでのみ最新のサブドキュメントを含むドキュメントを返す