Redis をキャッシュとして使用する場合、メモリ領域がいっぱいになると、古いデータが自動的に削除されます。 Memcached はデフォルトでこのように動作し、ほとんどの開発者はこれに精通しています。 LRU は、Redis でサポートされている唯一のリサイクル アルゴリズムです。
エビクション戦略 (推奨される学習: Redis ビデオ チュートリアル )
最大メモリ制限 (maxmemory) に達すると、Redis は maxmemory-policy で構成されたポリシーに基づいて特定の動作を決定します。
現在のバージョン、Redis 3.0 でサポートされている戦略は次のとおりです:
noeviction: 戦略を削除しないでください。最大メモリ制限に達した場合、より多くのメモリが必要な場合は、直接エラー メッセージを返します。ほとんどの書き込みコマンドでは、より多くのメモリが占有されます (DEL などのまれな例外はあります)。
allkeys-lru: すべてのキーに共通です。最初に最も最近使用されていない (LRU) キーを削除します。
volatile-lru: 有効期限が設定されている部分に限定されます。最初に最も最近使用されていない (LRU) キーを削除します。
allkeys-random: すべてのキーに共通; いくつかのキーをランダムに削除します。
volatile-random: 有効期限が設定されている部分のみ、キーの一部をランダムに削除します。
volatile-ttl: 有効期限が設定されている部分に限定され、残り時間 (有効期間、TTL) が短いキーが最初に削除されます。
期限切れキーが設定されておらず、前提条件が満たされていない場合、volatile-lru、volatile-random、および volatile-ttl 戦略の動作は、基本的に noeviction (削除なし) と同じになります。
システムの特性に基づいて、適切なエビクション戦略を選択する必要があります。もちろん、運用中にコマンドを使用してエビクション ポリシーを動的に設定したり、チューニングのために INFO コマンドを使用してキャッシュ ミスとヒットを監視したりすることもできます。
一般的に:
ホット データとコールド データに分割されている場合は、allkeys-lru 戦略を使用することをお勧めします。つまり、一部のキーは頻繁に読み書きされるため、特定のビジネス特性がよくわからない場合は、allkeys-lru が適しています。
ループ内のすべてのキーの読み取りと書き込みが必要な場合、または各キーのアクセス頻度が類似している場合は、allkeys-random 戦略を使用できます。つまり、すべての要素の読み取りと書き込みの確率は次のとおりです。ほぼ同じ。
Redis で TTL に基づいて削除する必要があるキーをフィルタリングする場合は、volatile-ttl 戦略を使用してください。
volatile-lru および volatile-random 戦略の主なアプリケーション シナリオは次のとおりです: キャッシュと永続キーの両方を持つインスタンス。一般に、このようなシナリオでは、2 つの別個の Redis インスタンスを使用する必要があります。
期限切れを設定すると追加のメモリが消費されるため、allkeys-lru 戦略を使用すると、有効期限を設定する必要がなくなるため、メモリをより効率的に使用できることに注意してください。
Redis 関連の技術記事の詳細については、「Redis データベース チュートリアルの使用方法の概要」 列にアクセスして学習してください。
以上がRedis キャッシュ戦略とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。