Redis では一般的に使用される 3 つの削除戦略があります:
1. 受動的削除 (遅延削除): 読み取り/書き込みアイテムに期限切れ キーが見つかると、遅延削除戦略がトリガーされ、キーが直接削除されます;
2. アクティブな削除 (定期的な削除): Redis は定期的な検査を実行して、期限切れのキーをクリーンアップします;
3. メモリが maxmemory 構成に達すると、キーの削除操作がトリガーされます;
アクティブな削除
Redis では、通常の操作が行われます。 redis.c/serverCron によって実装されており、主に次の操作を実行します:
1. 時間、メモリ使用量、データベース使用量など、サーバーのさまざまな統計情報を更新します。
2. データベース内の期限切れのキーと値のペアをクリーンアップします。
3. 無理のあるデータベースのサイズを調整します。
4. 接続に失敗したクライアントを閉じてクリーンアップします。
5. AOF または RDB 永続化操作を実行してみます。
6. サーバーがマスター ノードの場合は、スレーブ ノードの定期的な同期を実行します。
クラスター モードを使用している場合は、クラスター上で定期的な同期と接続テストを実行します。
Redis は、serverCron が時々自動的に実行されるように、時間イベントとして実行します。また、serverCron は、Redis サーバーの実行中に定期的に実行する必要があるため、周期的な時間イベントです。サーバーがシャットダウンされるまで定期的に実行されます。
概要
Redis で毎日大量のキー (たとえば、数千万) が期限切れになる場合は、期限切れのキーのクリーンアップを検討する必要があります。キー:
Redis アクティブ クリーニングの頻度を増やします (hz パラメーターを増やすことにより)
期限切れのキーを手動でクリーンアップします。最も簡単な方法は、スキャン操作を実行することです。スキャン操作により、最初のパッシブ削除。スキャン操作を実行することを忘れないでください。カウントを追加します。
dbsize コマンドによって返されるキーの数には、期限切れのキーが含まれます。
randomkey コマンドによって返されるキーには、期限切れのキーは含まれません。
scan コマンドによって返されるキーには、期限切れのキーが含まれます。Key
info コマンドは # Keyspace
db6:keys=1034937352、expires=994731489 を返します。 ,avg_ttl=507838502
キーに対応するキーの数は dbsize と同じです
expires は有効期限が設定されたキーの数を指します
avg_ttl は平均有効期限を指します有効期限が設定されたキーの時刻 (単位: ミリ秒)
以上がRedis内のデータを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。