Key에 Value를 저장한다. 만약 key가 이미 있다면, value의 데이터 타입에 관계없이 덮어쓴다.
옵션
2.6.12 버전 부터 아래의 옵션을 지원한다.
Ex seconds : key의 유효시간을 "초 단위"로 정할 수 있다.
Px milliseconds : key의 유효시간을 "밀리 초 단위"로 정할 수 있다.
NX : key가 없다면, 값을 설정하라
XX : key가 있다면, 값을 설정하라
2.6.12 이전에는 SETNX, SETEX, PSETEX등이 있었는데, 이 후 버전에서는 옵션으로 통합할 수 있다. 이들 명령은 제거될 예정이다.
반환 값
성공하면 "OK" 실패하면 NULL 을 반환한다.
예제
# 값을 설정
> SET session:yundream abcd123409df
OK
# 설정 값을 가져왔다.
> GET session:yundream
"abcd123409df"
# Key가 존재하지 않을 경우 값을 설정한다.
# 이미 Key가 존해하므로 실패한다.
> SET session:yundream abcd123409dfddd NX
(nil)
# 이 Key는 10초 후 삭제된다.
> SET session:yundream abcd123409df EX 10
OK
사용 패턴
NX와 EX max-lock-time의 조합으로 간단하게 잠금(locking) 시스템을 구현할 수 있다.
Key가 아직 삭제되지 않은 상태에서 클라이언트가 "NX" 옵션으로 SET 명령을 내리면, 이 명령은 실패 하고 nil을 반환 할 거다. EX 시간이 지나서 key가 삭제되면, 비로서 다른 클라이언트에서 이 key를 사용할 수 있게 된다. 명시적 잠금구현인 셈이다.
Expire Time 없이 락을 구현할 수도 있다.
고정된 (그리고 추측할 수 있는) 문자열 대신에, 추측할 수 없는 랜덤 값을 설정하는 방법이 있다. Key를 만든 유저만 이 랜덤값을 알 고 있다.
Key를 알고 있어야지만 key를 DEL할 수 있도록 스크립트를 작성한다.
대략 다음과 같은 모습일 거다.
if redis.call("get",KEYS[1]) == ARGV[1]
then
return redis.call("del",KEYS[1])
else
return 0
end
Contents
SET Key value Ex seconds Px milliseconds NX|XX
옵션
반환 값
예제
사용 패턴
Recent Posts
Archive Posts
Tags