redis の SETNX, SETEX, PSETEX はもういらないらしい
redis の SET
のオプションで全て済むという話。
今まで redis で string を SET する時下記のように使い分けていた
SETNX
- key が存在しなければ SET、存在しているなら何もしない
EXISTS + SET
を1つのコマンドで
- key が存在しなければ SET、存在しているなら何もしない
SETEX
- key を ttl つきで設定する
SET + expire
を1つのコマンドで
- key を ttl つきで設定する
PSETEX
- SETEX とほとんど同じだが、ミリ秒で ttl を設定できる
それが全て下の SET のオプションで済んでしまう
NX
SETNX
EX
SETEX
PX
SETPX
XX
- key が存在している場合にのみ SET する。
NX
と逆の操作
- key が存在している場合にのみ SET する。
操作例
127.0.0.1:6379> SET neko otoko3 NX EX 100 OK 127.0.0.1:6379> GET neko "otoko3" 127.0.0.1:6379> TTL neko (integer) 89 127.0.0.1:6379> SET neko kawaii XX OK 127.0.0.1:6379> GET neko "kawaii" 127.0.0.1:6379> SET neko onna NX (nil) 127.0.0.1:6379> GET neko "kawaii"