SET

레디스 개발자 교육 신청 레디스 정기점검/기술지원
Redis Technical Support
레디스 엔터프라이즈 서버
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 옵션은 버전 2.6.12에서 추가되었습니다.

겹쳐쓰기 방지: NX

NX 옵션을 사용하면 데이터베이스에 같은 키가 없을 경우에만 저장됩니다.
NX 옵션은 lock 처리에 주로 사용합니다. 왜냐하면 단일 명령으로 데이터가 있는지 확인하고 저장까지 할 수 있기 때문입니다.

Example

명령>set key1 Hello NX
결과>OK
명령>set key1 Redis NX
결과>(nil)
명령>get key1
결과>Hello

애니메이션 보기

NX 옵션은 대.소문자 구분 없이 사용가능합니다.
첫 번째 명령은 데이터베이스에 key1이 없으므로 데이터가 정상적으로 저장되었습니다.
두 번째 명령은 첫 번째 명령이 실행되어 key1이 저장되어 있으므로 (nil)을 리턴합니다.
이 옵션은 SETNX 명령과 같은 동작을 합니다.

데이터베이스에 이미 키가 있을 경우에만 저장: XX

XX 옵션은 지정한 키가 이미 데이터베이스에 있을 경우에만 저장됩니다.

Example

명령>set key2 Hello XX
결과>(nil)
명령>set key2 Hello
결과>OK
명령>set key2 Redis XX
결과>OK
명령>get key2
결과>Redis

애니메이션 보기

레디스의 모든 옵션은 대.소문자 구분 없이 사용가능합니다.
XX 옵션을 사용한 첫 번째 명령은 데이터베이스에 key2가 없으므로 데이터가 저장되지 않습니다.
두 번째는 XX 옵션을 사용하지 않았으므로 저장됩니니다.
세 번째는 데이터베이스에 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 초] [PX 밀리초] [EXAT timestamp] [PXAT milliseconds-timestamp] [KEEPTTL] [GET]

  • 이 명령은 version 1.0.0 부터 사용할 수 있습니다.
  • NX, XX, EX, PX 옵션은 버전 2.6.12에서 추가되었습니다.
  • KEEPTTL 옵션은 버전 6.0에서 추가되었습니다.
  • EXAT, PXAT, GET 옵션은 버전 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 답글이 올라오면 이메일로 알려드리겠습니다.