Redisメモリ淘汰ポリシー

1197 ワード

Expire


Redisのデータはexpireコマンドを使用して期限切れを設定することができ、期限切れになった後、reidsはすぐに期限切れのkeyを削除するわけではありません.期限切れkeyの処理には2つの方法が採用されています.
  • 定期削除:redisは1000 msごとに一部のkeyをランダムに取得し、期限が切れたら対応するkeyを削除します.
  • 不活性削除:keyにアクセスするたびにkeyが期限切れであるかどうかをチェックし、期限切れであれば対応するkeyを削除する.

  • メモリ淘汰ポリシー


    redisプロファイルにはmaxMemoryパラメータがあり、メモリ内のデータが最大メモリの構成に達すると、新しいデータ書き込みは淘汰ポリシーを実行します.maxMemoryが0に設定されている場合は、システムメモリが新しい書き込みデータを格納するのに不足している場合、redisもメモリ淘汰ポリシーを採用します.
    1. noeviction:               **     **;
    2. allkeys-lru:  **      **          ;
    3. allkeys-random: **      **         ;
    4. volatile-ttl:  **        **             ;
    5. volatile-random: **        **           ;
    6. volatile-lru: **        **          ;
    

    メモリ淘汰ポリシー設定のデフォルトはnoevictionです.# maxmemory-policy noeviction

    LRU


    redisが採用したLRUは非正確なLRUアルゴリズムであり、サンプリングに基づいて実現される.redisは単一スレッドであるため、全量のデータを用いてLRU計算を行うと、CPUリソースが比較的消費される.従って、redisは、頻繁に使用されないkeyをランダムに5つ選択して除去することを示す# maxmemory-samples 5という重要なパラメータを提供する.構成されたパラメータ値が大きいほど、LRUの結果は全量LRUの結果に近づくことができます.ただし、CPUに大きなオーバーヘッドが発生するため、redisをLRUキャッシュサービスとして使用する場合は、デフォルトの構成を維持することをお勧めします.
    備考:LRUアルゴリズムとLRUアルゴリズムの実現を理解する;