SET

Redis 開発者教育の申込 Redis 定期点検/技術サポート
Redis Technical Support
Redis エンタープライズサーバー
Redis Enterprise Server

保存

set はデータを保存するコマンドです。使い方は set key value です。
get は保存したデータを取得するコマンドです。

Example

コマンド>set key value
結果>OK
コマンド>get key
結果>value

二重引用符の使用

value 部分で空白を入れるときは二重引用符を使います。

Example

コマンド>set key "Hello Redis!"
結果>OK
コマンド>get key
結果>Hello Redis!

上書き

同じ key で SET コマンドを実行すると、以前の value は消えて新しく入力した value が残ります。

Example

コマンド>set key Hello
結果>OK
コマンド>set key GoodBye
結果>OK
コマンド>get key
結果>GoodBye

アニメーションを見る

Note 上書きしないようにするには NX オプションを使います。  NX, XX, EX, PX オプションは version 2.6.12 で追加されました。

上書き防止: NX

NX オプションを使うと、データベースに同じキーがない場合にだけ保存されます。
NX オプションはロック(lock)処理によく使います。 単一コマンドでデータの有無を確認して保存までできるからです。

Example

コマンド>set key1 Hello NX
結果>OK
コマンド>set key1 Redis NX
結果>(nil)
コマンド>get key1
結果>Hello

アニメーションを見る

NX オプションは大文字・小文字を区別せずに使えます。
最初のコマンドはデータベースに key1 がないので、データは正常に保存されました。
2 番目のコマンドは最初のコマンドで key1 が保存されているので (nil) を返します。
このオプションは SETNX コマンドと同じ動作をします。

データベースにすでにキーがある場合にだけ保存: XX

XX オプションは、指定したキーがすでにデータベースにある場合にだけ保存されます。

Example

コマンド>set key2 Hello XX
結果>(nil)
コマンド>set key2 Hello
結果>OK
コマンド>set key2 Redis XX
結果>OK
コマンド>get key2
結果>Redis

アニメーションを見る

Redis のすべてのオプションは大文字・小文字を区別せずに使えます。
XX オプションを使った最初のコマンドはデータベースに key2 がないので、データは保存されません。
2 番目は XX オプションを使っていないので保存されます。
3 番目はデータベースに key2 があるので正常に保存されます。

指定した時間のあとでデータが消える: EX <秒単位で指定>

EX 秒(second) オプションは、指定した秒のあとでデータが消えます。
有効期限付きのデータを保存するときに便利です。

Example

コマンド>set key3 Hello EX 5
結果>OK
コマンド>get key3   1秒後
結果>Hello
コマンド>get key3   5秒後
結果>(nil)

アニメーションを見る

このオプションは SETEX コマンドと同じ動作をします。

指定した時間のあとでデータが消える: PX <1/1000秒単位で指定>

PX ミリ秒(millisecond) オプションは、指定したミリ秒のあとでデータが消えます。
細かい有効期限を指定するときに使います。

Example

コマンド>set key3 Hello PX 5000
結果>OK
コマンド>get key3   1秒後
結果>Hello
コマンド>get key3   5秒後
結果>(nil)
このオプションは PSETEX コマンドと同じ動作をします。

指定した時刻(timestamp,秒)のあとでデータが消える: EXAT <timestamp>

EXAT 時刻(timestamp,秒) オプションは、指定した時刻のあとでデータが消えます。
有効期限付きのデータを保存するときに便利です。
Redis 6.2 で追加されました。

指定した時刻(milliseconds-timestamp,ミリ秒)のあとでデータが消える: PXAT <milliseconds-timestamp>

PXAT 時刻(milliseconds-timestamp,ミリ秒) オプションは、指定した時刻のあとでデータが消えます。
有効期限付きのデータを保存するときに便利です。
Redis 6.2 で追加されました。

有効期限(expire time)を維持: KEEPTTL

SET コマンドは既定で有効期限(expire time)を消します。 KEEPTTL オプションを使うと有効期限を消しません。 このオプションは、次のような特別な場合に使うために作りました。
INCRBYFLOAT コマンドが実行されると AOF には SET コマンドに変わって記録され、 以前に有効期限が設定されていた場合は消えます。 このような場合に KEEPTTL オプションを使って有効期限が消えないようにします。

Example

コマンド>set key4 10 ex 100   AOF: SET key4 10, PEXPIREAT key4 1579954223443
結果>OK
コマンド>incrbyfloat key4 10   AOF: SET key 20 KEEPTTL
結果>20
コマンド>SHUTDOWN -> RESTART
コマンド>ttl key4     restart 後も expire time が維持される。
結果>25
6.0-r1 では INCRBYFLOAT を SET KEEPTTL に変更する部分はできていますが、 コマンドを実際に記録する aof.c feedAppendOnlyFile() で SET コマンドを処理する部分が 修正されていないため、KEEPTTL が AOF に記録されません。 SET key value KEEPTTL コマンドも AOF には SET key value だけが記録されます。
この問題は 6.0.5(2020年6月9日発表)で解決されました。

新しい値を入れて既存の値を取得: GET

このオプションは 6.2 で追加されました。
これからは既存の GETSET コマンドではなく、このオプションの使用をおすすめします。

Example

コマンド>set key1 value1
結果>OK
コマンド>set key1 value2 get
結果>value1
コマンド>get key1
結果>value2

構文

SET key value [NX|XX] [EX seconds] [PX milliseconds] [EXAT timestamp] [PXAT milliseconds-timestamp] [KEEPTTL] [GET]

  • このコマンドは version 1.0.0 から使用できます。
  • NX, XX, EX, PX オプションは version 2.6.12 で追加されました。
  • KEEPTTL オプションは version 6.0 で追加されました。
  • EXAT, PXAT, GET オプションは version 6.2 で追加されました。
  • 時間計算量は O(1) です。
SQL Insert Redis Enterprise 7.3.0 以上なら INSERT を使ってみてください。
関連コマンド SETNX, SETEX, PSETEX, TTL, PTTL, MSET, APPEND
Clients for Java Jedis, Lettuce, Redisson
Clients for C Hiredis

<< STRINGS SET SETS >>

Email 返事がかかってなれば、メールでお知らせします。