set
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で保存すると、以前のものは消去され、新たに入力したものが残ります。
上書きをしない場合は、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 >> |
---|
クリック件数 :