Redisの使い方 その3 – キーの生存期限を設定する(EXPIRE)

Redisでは、各キーごとに生存期限:Expireを設定することができます。期限を過ぎたらキーは自動的に削除されます。

期限を設定する

EXPIRE key seconds

キー key に対して、その生存期限を seconds に設定します。その期限を過ぎると、Redisの自動削除ロジックによって削除されます。

※1: 期限切れてるのにキーが残ることがある?

=> 削除ロジックが回ってくるまでに時間がかかっている可能性があります。厳密な期限が必要な場合は必ずTTL(後述)のチェックを行いましょう。

※2: 期限付きのStringを更新すると期限が消える?

仕様です。setexコマンドを使えば期限も同時に設定できるので、そちらを使うようにしましょう。

※3: 期限付きのキーを更新するとキーが消滅する?

=> 昔のRedis(バージョン2.1.3以前)だと、期限付きのキーの値を変更するとキーが消滅する、という動作をしていました。最新バージョンでは直っていますが、古いバージョンを使っている場合は注意が必要です。

UNIX TIMEで期限を設定する

EXPIREAT key timestamp

UNIX秒で期限を指定できます。

期限の残り秒数を取得する

TTL key

キーの残り生存秒数を取得します。-1 が返ってくる場合はキーが存在しないか期限が設定されていないかのどちらかです。

※システムを設計する上での注意点

上記の期限は、キーごとにのみ設定できるものであり、キーに含まれる要素ごとには設定できません(例えばSet中の特定のmemberだけに期限を設定するのは無理)。

要素ごとに消えて欲しい場合は代わりにStringを使うことになります。キー名はkeysコマンドで正規表現的に検索することが可能なので、うまく使えばなんとかなります。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中