ホームページ >データベース >Redis >Redis キーの有効期限設定

Redis キーの有効期限設定

尚
転載
2020-05-21 09:10:374113ブラウズ

Redis キーの有効期限設定

EXPIRE key Seconds

は、キーの有効期限を設定するために使用されます。2 番目のパラメータは、キーの有効期限が切れるまでの秒数を示します。キーの有効期限が切れると、キーは自動的に削除されます。 Redis の用語では、有効期限のあるキーは揮発性と呼ばれることがよくあります。

このキーに対して削除または上書き操作を使用すると、有効期限がクリアされます。これらの操作には、DEL、SET、GETSET、およびすべての *STORE コマンドが含まれます。値を変更する IINCR、キューに新しい値を追加する LPUSH、ハッシュ テーブル内のメンバーを変更する HSET など、キーの値を変更するコマンドは有効期限を変更しません。

有効期限をクリアしたいだけの場合は、キーが期限切れにならないように PERSIST コマンドを呼び出すことができます。有効期限はキーの属性であり、キー名の変更 (RENAME) によって変更されることはありません。 RENAME を使用して他のキーを上書きすると、上書き効果だけが失われ、名前が変更されたキーの有効期限は引き続き保持されます。

注: キーに正以外の数値を指定して EXPIRE/PEXPIRE コマンドを呼び出すか、過去の時刻を指定して EXPIREAT/PEXPIREAT を呼び出すと、キーが直接削除されます。

有効期限の更新

有効期限を指定してキーに対して EXPIRE を呼び出すと、キーの有効期限を更新できます。

戻り値

EXPIRE key minutes を呼び出すと、0 または 1 が返されます。0 はキーが存在しないことを意味し、1 はキーがタイムアウトに設定されていることを意味します。

Redis が有効期限のあるキーを処理する方法

有効期限のあるキー

通常の状況では、redis キーは次の期間まで存在します。キーが明示的に削除されるか (DEL コマンドを介して)、またはメモリの制約によりクリアされます。キーのタイムアウトを設定するには、関連情報を記録するために追加のメモリが必要ですが、Redis はキーの有効期限が切れると確実に削除されます。

有効期限の精度

redis2.6 以降、有効期限の偏差は 0 ~ 1 ミリ秒になります。

有効期限ロジック

キーの有効期限は Unix 絶対タイムスタンプ (精度はミリ秒) を使用します。たとえ Redis インスタンスが閉じられていたとしても、それによってUnix 時間 これを突くと、キーも期限切れになります (すぐにはクリアされないだけです)。

RDB ファイルを移動して、ある Redis 内のデータを別のコンピューター上の Redis に移動する場合は、2 つのコンピューターの UNIX 絶対タイムスタンプが一致していることを確認する必要があります。

キーの有効期限を設定する場合は、コンピュータの時刻を不用意に変更しないでください。Redis はシステム時刻を頻繁にチェックするためです。時刻を進めて調整すると、有効期限が切れるはずのキーの有効期限が切れなくなります。時間を逆方向に調整すると、有効期限が切れてはいけないキーが期限切れになります。

Redis が期限切れのキーをクリーンアップする方法:

Redis は、パッシブ クリーニングとアクティブ クリーニングという 2 つの方法で期限切れのキーをクリーンアップします。

(1) パッシブクリーニング: 有効期限のあるキーにアクセスする場合、キーの有効期限が切れていることが判明すると、キーはクリアされます。

(2) redis は 1 秒あたり 10 回のチェックを実行します。各チェックには次の内容が含まれます。

  • 有効期限のある 20 個のキーをランダムに選択し、期限切れのキーをすべて削除します。

  • これら 20 個のキーのうち 25% 以上のキーの有効期限が切れている場合は、手順 1) を再度実行します。

これは単純な確率アルゴリズムであり、選択されたキーが有効期限のあるすべてのキーのサンプルとして使用できると想定しています。上記の操作により、基本的に、タイムアウト期間のあるキーに対するタイムアウトしたキーの比率が 25% 未満であることがわかり、クリーンアップされていない期限切れのキーによって占有される過剰なメモリは 25% 未満になるはずです。

# #レプリケーションおよび AOF ファイルの有効期限のクリーンアップを処理する方法

一貫性が損なわれないように、キーの有効期限が切れてクリーンアップされると、DEL 操作は AOF ファイルおよびすべてのレプリカと同期されます。ノード。このように、マスター ノードが有効期限のクリーンアップ操作を担当します。スレーブ ノードはキーの有効期限のクリーンアップを処理せず、マスター ノードからの DEL コマンドを待つだけです。スレーブノードは一貫性を保ちます。

redis の詳細については、

redis 入門チュートリアル 列に注目してください。

以上がRedis キーの有効期限設定の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。