SET

Redis 開発者教育
Redis Developer Course
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!


上書き

Redisのsetコマンドは、同じkeyで保存すると、以前のものは消去され、新たに入力したものが残ります。

Example

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

アニメーション表示

Note 上書きをしない場合は、NXオプションを使用します。  NX、XX、EX、PXオプションは、バージョン2.6.12で追加されました。


上書き防止

同じkeyでデータが存在しない場合にのみ保存するには、NXオプションを使用します。
NXオプションは、lock処理に主に使用されます。
なぜなら、単一のコマンドでデータがあることを確認して、保存まですることができるからです。

Example

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

アニメーション 表示

NXオプションは、大文字と小文字を区別せずに使用可能です。
最初のコマンドは、データベースにkey1がないため、データが正常に保存されます。
第二のコマンドは、最初のコマンドが実行され、key1が保存されているので(nil)をリターンします。
このオプションは、SETNXコマンドと同じ動作をします。


既にデータがある場合にのみ保存

XXオプションは、すでにデータがある場合にのみ保存されます。

Example

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

アニメーション表示

Redisのすべてのオプションは、大文字と小文字の区別なく使用できます。
XXオプションを使用した最初のコマンドは、データベースにkey2がないため、データが保存されません。
第二は、XXオプションを使用していないので、保存されます。
第三は、データベースにkey2がありますので、正常に保存されます。


指定した時間後にデータ消去:秒単位の指定

EX秒(second)オプションは、指定した秒後にデータが消去されます。
有効期限を持つデータを保存するときに役立てています。

Example

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

アニメーション表示

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


指定した時間後にデータ消去:1/1000秒単位の指定

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

Example

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

만료 시간(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일 발표)에서 해결되었습니다.

Subquery(서브쿼리) 기능

Value(값) 부분에 서브쿼리를 사용해서 값을 넣을 수 있습니다.

서브쿼리로 사용할 수 있는 명령어 리스트입니다.

  • SET key (GET key1)
  • SET key (LPOP mylist)
  • SET key (RPOP mylist)
  • SET key (LINDEX mylist 3)
  • SET key (LRANGE mylist 3 3)
  • SET key (HGET myhash field)

Example

명령>set key Hello
결과>OK
명령>set key4 (get key)
결과>OK
명령>get key4
결과>Hello
서브쿼리 기능은 Enterprise 버전에서 사용 가능합니다.

コマンド

SET key value[NX|XX] [EX 秒][PX ミリ秒] [KEEPTTL] | (subquery)

  • このコマンドは、version 1.0.0 から使用することができます。
  • NX、XX、EX、PXオプションは、バージョン2.6.12で追加されました。
  • 論理的処理の所要時間はO(1)です。
関連コマンド SETNX, SETEX, PSETEX, TTL, PTTL, MSET, APPEND
Clients for Java Jedis, Lettuce, Redisson
Clients for C Hiredis

<< STRINGS SET DEL >>

クリック件数 :

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