Redis GETEX

Redis Getex



Redis は、インメモリ キャッシュ、データベース、時系列、ストリーム エンジン、メッセージ ブローカーなどとして使用されるキーと値のデータ ストアです。効率的。さらに、O(1) や O(log(N)) のように時間の複雑さが少なく、クエリ速度が非常に高速です。 Redis キーは、文字列、セット、ハッシュ、ソート済みセット、リストなど、さまざまなデータ構造を保持できます。

通常、GET および SET コマンドは、特定の Redis キーに格納されている文字列型の値を格納および取得するために使用されます。これら 2 つのコマンドは、一定の時間計算量で動作します。







さらに、GETEX コマンドを使用して、特定のキーに格納されている文字列値を読み取ることができます。ただし、このコマンドは並列書き込み操作にも関連付けられています。このガイドでは、GETEX コマンドの構文、そのオプション、および使用例に焦点を当てます。



Redis キーの TTL

Time To Live (TTL) 値は、特定のデータの有効期限です。通常、TTL はデータベース行に関連付けることができます。タイムアウトは Redis キーでも設定できます。そのため、Redis クライアントは、特定のキーがデータ ストアで使用可能になる残りの秒数を確認できます。 Redis は、特定のキーの有効期限の値を確認するための TTL コマンドを提供します。指定されたキーにタイムアウトが関連付けられていない場合、TTL コマンドは -1 を返します。次のセクションで TTL コマンドを使用して、特定のキーの残り時間を確認します。



GETEX コマンド

強調表示されているように、GETEX コマンドは、指定されたキーの有効期限を設定するために使用できることを除いて、GET コマンドに似ています。さらに、コマンド オプションを使用して、特定のキーからタイムアウト値を削除できます。 GETEX コマンドの構文は次のとおりです。





GETEX キー [ EX timeout_in_seconds | | PX timeout_in_milliseconds | | EXAT timeout_in_unix-time-seconds | | PXAT timeout_in_unix-time-ミリ秒 | | 持続する ]

鍵: これは、文字列値を指すキーです。

次のオプションの引数を使用して、タイムアウトを秒またはミリ秒で設定できます。



元: これにより、特定のキーの有効期限が秒単位で設定されます。

PX: キーのタイムアウト値はミリ秒単位で設定されます。

さらに、次のコマンド オプションを使用して、UNIX タイムスタンプ値を秒またはミリ秒で指定できます。 EXAT PXAT :

EXAT: 有効期限は UNIX タイムスタンプ形式で設定され、タイムスタンプは秒単位になります。

PXAT: 特定の Redis キーのタイムアウトは、ミリ秒単位の UNIX タイムスタンプとして設定されます。

持続: これを指定することで、指定したキーに関連付けられた有効期限の値を削除できます。

GETEX コマンドは、指定されたキーの値を返します。このコマンドは、文字列型の値でのみ機能し、ハッシュ、リスト、ソートされたセットなどでは機能しません。文字列以外の値に関連付けられたキーを指定すると、コマンドはエラーを返します。さらに、キーがすでに期限切れであるか存在しない場合、コマンドは戻ります なし。

次のセクションでは、GETEX コマンドの実際の使用法について説明します。

ユース ケース — パスワード回復/OTP のための一時的なリセット リンクまたは PIN コードの生成

Web ホスティング会社は、登録ユーザーにパスワード回復機能を提供しています。セキュリティ対策として、5 分以内に期限切れになる新しい URL リンクをユーザーに送信します。同社は Redis データ ストアを長い間使用しており、GETEX コマンドを使用して、特定のユーザーの有効期間の値を設定しています。

user_id 1000 のユーザーがパスワードの回復を要求したとします。そのため、リカバリ URL をキーに保存できます。 回復URL:ユーザーID:1000 .次のように、SET コマンドを使用して回復 URL を保存できます。

設定 回復URL:ユーザーID: 1000 'https://abc.com/recovery/userid=1000,key=sdfiuoe3290e9rjs'

文字列 URL がキーに正しく格納されているかどうかを確認してみましょう 回復 URL: ユーザー ID: 1000。 次のように GETEX コマンドを使用できます。

getex リカバリ URL: ユーザー ID: 1000

前のコマンドの出力を次に示します。

GETEX コマンドの代わりに GET コマンドを使用した場合、出力は同じになります。

TTL コマンドを使用して、有効期限がこのキーに関連付けられているかどうかを確認しましょう。

Ttl RecoveryURL:UserID: 1000

予想どおり、TTL コマンドによって -1 が返されました。これは、指定されたキーに有効期限が関連付けられていないことを意味します。

この例のように、ホスティング会社は回復 URL に 5 分のタイムアウトを設定する必要があります。したがって、使用します コマンドオプション。 5 分は 300 秒なので、GETEX コマンドは次のように作成できます。

getex リカバリ URL: ユーザー ID: 1000 500

TTL コマンドを数回実行して、キーがデータ ストアに存在する残り時間を調べてみましょう。

予想通り、時間は減少しており、最終的には、 回復URL:ユーザーID:1000 キーが削除されます。以下は、5 分後の出力です。

コマンドによって -2 が返されました。これは、キーが期限切れになり、データ ストアから削除されたことを意味します。

特定のキーに関連付けられているタイムアウト値を削除する必要がある場合があります。そのため、PERSIST コマンド オプションを使用して、指定したキーに関連する TTL 値を削除できます。

別のサンプル キーを作成し、それに文字列値を割り当てましょう。この場合、TTL 値をミリ秒単位で指定します。 PX オプション。

設定 KeytoTestPersist 「これは 60 秒以内に期限切れになります」 PX 50000

次に、次のように残り時間を確認します。

予想どおり、TTL は減少しています。次のように、PERSIST オプションを指定して GETEX コマンドを呼び出しましょう。

getex KeytoTestPersist 持続

理想的には、これにより、このキーに関連付けられた TTL が削除されます。キーの TTL を調べてみましょう KeytoTestPersist。

TTL コマンドが -1 を返しました。これは、TTL がキーに関連付けられていないことを意味します。 KeytoTestPersist。

同様に、 ゲテックス コマンドを使用して、UNIX タイムスタンプでキーの有効期限を設定できます。

結論

要約すると、Redis GETEX コマンドを使用して、GET コマンドと同様に、特定のキーに格納されている文字列値を取得できます。 GETEX コマンドとの唯一の違いは、特定のキーの有効期限の設定と削除がサポートされていることです。有効期限を秒、ミリ秒、および UNIX タイムスタンプの秒またはミリ秒で指定するためのいくつかのオプションの引数がサポートされています。説明したように、このコマンドは、特定のキーに関連付けられている TTL を削除する PERSIST オプションを提供します。全体として、GETEX コマンドは一定の時間の複雑さで動作します。