#TTL コマンドと PTTL コマンドは、生存時間または有効期限を持つキーを受け入れます。 、キーの残りの生存時間を返します。つまり、キーがサーバーによって自動的に削除されるまでにかかる時間を返します。
Redis には 4 つあります。キーの生存時間 (キーが存在できる期間) または有効期限 (キーがいつ削除されるか) を設定するために使用できるさまざまなコマンド:EXPIRE
上記の 4 つのコマンドのどれがクライアントによって実行されたとしても、変換後の最終的な実行結果は PEXPIREAT コマンドを実行した場合と同じになります。
redisDb 構造の Expires ディクショナリは、データベース内のすべてのキーの有効期限を保存します。このディクショナリを Expires ディクショナリと呼びます。辞書の有効期限はポインターであり、このポインターはキー空間内のキーオブジェクト (つまり、データベースキー) を指します。
有効期限ディクショナリの値は、long long 型の整数です。この整数には、キーが指すデータベース キーの有効期限 (ミリ秒精度の UNIX タイムスタンプ) が格納されます。
次の図は、期限切れの辞書を含むデータベースの例を示しています。この例では、キー スペースにはデータベース内のすべてのキーと値のペアが格納されますが、期限切れの辞書はデータベースに保存されます。データベースキーの有効期限を格納します。表示の便宜上、図のキー空間と有効期限辞書では、アルファベット キー オブジェクトとブック キー オブジェクトが 2 回繰り返されています。実際には、キー スペースのキーと有効期限ディクショナリのキーは同じキー オブジェクトを指すため、重複するオブジェクトは存在せず、スペースが無駄になることはありません。
図の期限切れの辞書には 2 つのキーと値のペアが保存されています。
最初のキーと値のペアのキーは次のとおりです。 alphabet キー オブジェクトの値は 1385877600000 です。これは、データベース キー アルファベットの有効期限が 1385877600000 (2013 年 12 月 1 日 0:00) であることを意味します。 2 番目のキーと値のペアのキーはブック キー オブジェクトで、値は 1388556000000 です。これは、データベース キー ブックの有効期限が 1388556000000 (2014 年 1 月 1 日 0:00) であることを意味します。 。クライアントが PEXPIREAT コマンド (または PEXPIREAT コマンドに変換される他の 3 つのコマンド) を実行してデータベース キーの有効期限を設定すると、サーバーは指定されたデータベース キーと有効期限をデータベースの有効期限ディクショナリに関連付けます。
サーバーが次のコマンドを実行した後
期限切れの辞書はキーと値のペアを追加します。ここで、キーはメッセージ キー オブジェクト、値は 1391234400000 (2014 年 2 月 1 日の 0:00) です。図
以下はPEXPIREATコマンドの擬似コード定義です
PERSISTコマンドは有効期限を削除できますキーの
PERSIST コマンドは、PEXPIREAT コマンドの逆の操作です。PERSIST コマンドは、有効期限ディクショナリで指定されたキーを検索し、キーと値 (有効期限) の関連付けを解除します。時間)を有効期限ディクショナリに登録します。
プログラムは、期限切れ辞書を通じて、次の手順を使用して、指定されたキーの期限が切れているかどうかを確認できます。
1) 指定されたキーが期限切れであるかどうかを確認します。有効期限辞書に存在します : 存在する場合は、キーの有効期限を取得します。
2) 現在の UNIX タイムスタンプがキーの有効期限より大きいかどうかを確認します。そうである場合は、キーの有効期限が切れています。そうでない場合は、キーの有効期限が切れていません。このプロセスは疑似コードで記述できます:
有効期限が 1385877600000 (2013 年 12 月 1 日 0:00) のキー アルファベットの場合:
現在時刻が 1383282000000 (2013 年 11 月 1 日 0:00) の場合、is_expired(alphabet) を呼び出すと、現在時刻がアルファベット キーの有効期限よりも小さいため、False が返されます。
一方、現在時刻が 1385964000000 (2013 年 12 月 2 日 0:00) の場合、is_expired(alphabet) を呼び出すと True が返されます。これは、現在時刻がアルファベットの有効期限よりも大きいためです。鍵。
推奨される学習: Redis ビデオ チュートリアル
以上がRedis 設定の生存時間と有効期限の原理分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。