RedisのキーにEXPIREを設定する

Redisのキーへのexpire設定を調べていたのでメモとして残します。

基本的にキーに対してexpireコマンドにて有効期限を設定します。
有効期限の確認はttlコマンドにて行います。
キーが生存中であればexpireの上書きが可能です。(バージョン2.1.3以降)
Stringのset時にexpireを設定してその値を更新するとexpireが消えるので注意が必要です。

コマンド

expire key seconds

[key]に対してTTL(有効期限)を設定します。
secondsなので秒数で指定が可能です。

> set test "test"
OK
> expire test 10
(integer) 1
> get test
"test"
> ttl test
(integer) 5
 ttl test
(integer) 0
> ttl test
(integer) -2
> get test
(nil)

String型のデータを扱う際は注意が必要!
値を更新するとexpireの設定が消えてしまいます。

> set test "test"
OK
> get test
"test"
> expire test 100
(integer) 1
> get test
"test"
> ttl test
(integer) 83
> set test "test2"
OK
> ttl test
(integer) -1

値を更新する際にexpireの再設定を行う場合は後述の「setex」を利用したほうがよさそうです。

setex key seconds value

[key]に対してTTL(有効期限)を設定します。
secondsなので秒数で指定ができる。
前項のexpireとほぼ同じですが、アトミックな SET+EXPIREとしてkeyの生成とexpireの設定を同時に行ってくれる点が異なる。

> setex test 10 "test"
OK
> get test
"test"
> ttl test
(integer) 5
> ttl test
(integer) -2
> get test
(nil)

expireat key timestamp

[key]に対してTTL(有効期限)を設定します。
こちらはUNIXタイムスタンプで指定が可能です。

# date +%s
> 1473048988

# redis-cli
> set test "test"
OK
> expireat test 1473049171
(integer) 1
> ttl test
(integer) 175
> get test
"test"

ttl key

キーの有効期限を確認します。
前述のコマンド例にて利用する感じで設定したキーのexpireの残り時間が確認できます。

persist key

キー key の有効期限を破棄します。

> setex test 100 "test"
OK
> ttl test
(integer) 96
> persist test
(integer) 1
> ttl test
(integer) -1

参考サイト

redis 2.0.3 documentation

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

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る