Redisでキーを期限切れにする方法
イントロダクション
Redisはオープンソースのインメモリキーバリューデータストアです。Redisのキーはデフォルトで永続的に保存されるため、手動で削除しない限りRedisサーバーはそれらを保持し続けます。ただし、特定の時間が経過した後にキーを削除したい場合もあります。言い換えると、そのキーを一時的にしたいのです。
このチュートリアルでは、キーの有効期限を設定する方法、キーの有効期限までの残り時間を確認する方法、そしてキーの有効期限設定をキャンセルする方法について説明します。
このガイドの使用方法
このガイドは、自己完結型の例を使用したハンドブックとして記述されています。どのセクションもお使いのタスクに関連している場合は、どうぞ該当するセクションに飛んでみてください。
このガイドで表示されているコマンドは、Redisバージョン6.0.16を実行しているUbuntu 22.04サーバーでテストされました。同様の環境を設定するためには、「Ubuntu 22.04にRedisをインストールしてセキュリティを確保する方法」ガイドのステップ1に従うことができます。これらのコマンドの振る舞いを確認するために、Redisのコマンドラインインターフェースであるredis-cliを使用して実行します。異なるRedisインターフェース(例:Redli)を使用している場合、一部のコマンドの正確な出力は異なる可能性があります。
次の通りに日本語で言い換えます:
このガイドのコマンドをテストするために、管理されたRedisデータベースインスタンスを用意することもできますが、データベースプロバイダーの許可する制御レベルによっては、このガイドの一部のコマンドが説明どおりに動作しない場合があります。Silicon Cloudのマネージドデータベースを用意するには、マネージドデータベース製品の文書に従ってください。その後、Redliをインストールするか、TLSトンネルを設定してTLS経由でマネージドデータベースに接続する必要があります。
期限を設定するキー設定
expireコマンドを使用すると、既存のキーに有効期限を設定することができます。このコマンドでは、キーの名前と有効期限までの秒数を引数として指定します。この機能をデモンストレーションするために、以下の2つのコマンドを実行してください。最初のコマンドでは、値が「cantaloupe」という文字列のkey_melonという名前のキーを作成します。
- set key_melon “cantaloupe”
第2のコマンドは、450秒後に有効期限が切れるように設定します。
- expire key_melon 450
タイムアウトが正常に設定された場合、expireコマンドは1(整数)を返します。タイムアウトの設定に失敗した場合は、代わりに0(整数)を返します。
もしくは、expireatコマンドを使用してキーの期限を特定の時刻に設定することもできます。有効期限の直前の秒数ではなく、Unixタイムスタンプを引数として使用します。Unixタイムスタンプは、1970年1月1日の00:00:00 UTC(協定世界時)からの経過秒数を指します。特定の日時のUnixタイムスタンプを見つけるために、EpochConverterやUnixTimestamp.comのようなオンラインツールがいくつか利用できます。
たとえば、key_melonを2025年5月1日午後8時30分(GMT)に期限切れにするためには、以下のコマンドを使用することができます(Unixタイムスタンプ1746131400で表されます)。
- expireat key_melon 1746131400
expireatに渡されるタイムスタンプが既に過去のものである場合、そのキーは直ちに削除されます。
鍵の有効期限がいつまでかをチェックする
キーの有効期限を設定する際には、「time to live(生存期間)」を表すttlを使用して、有効期限までの残り時間(秒単位)を確認できます。
- ttl key_melon
(integer) 79247184
より詳細な情報が必要な場合、pttlコマンドを実行することで、キーが失効するまでの時間をミリ秒単位で返します。
- pttl key_melon
(integer) 79247156730
キーが有効期限を持っていない場合、およびキーが存在しない場合、ttlとpttlの両方が(整数)-1を返します。
キーの持続
キーが期限切れに設定されている場合、setまたはgetsetなどキーの内容を上書きするコマンドを使用すると、キーの期限切れ時間がクリアされます。キーの期限切れを手動でクリアするには、persistコマンドを使用してください。
- persist key_melon
persistコマンドは、正常に完了した場合に(integer) 1を返し、キーが期限切れにならないことを示します。
結論
このガイドでは、Redisでキーの永続性を操作および確認するために使用されるいくつかのコマンドについて詳しく説明しています。もしこのガイドで他の関連するコマンド、引数、または手順について学びたいと思うことがあれば、コメントでお気軽にお尋ねくださいまたは提案してください。
Redisのコマンドについての詳細情報については、Redisデータベースの管理方法に関するチュートリアルシリーズをご覧ください。