-
Redis : 기본 자료구조 :: SET , GET , MSET , MGET , DEL , KEYSDB/Redis 2023. 12. 12. 00:01
key 와 value 에 작성 할 텍스트는
'
또는"
로 감싸주거나,'
또는"
또는공백문자
가 없는 한 단어일 경우 그냥 작성해줘도 됨
SET
형태
SET key value [NX | XX] [GET] [EX seconds | PX milliseconds]
- [NX | NN] : NX 또는 NN 중 1개 이하 선택적 사용
-
NX
: 해당키가 없는
경우 생성. 키가 있다면 nil 반환 -
XX
: 해당키가 있는
경우 덮어씀. 키가 없다면 nil 반환
-
- [GET] : GET 선택적 사용
- 먼저 저장되어있던 값 반환 후 신규 값 저장
키가 없는 상태였다면 nil 반환
- 먼저 저장되어있던 값 반환 후 신규 값 저장
키가 없는 상태였다면 nil 반환
- [EX | PX] : EX 또는 PX 중 1개 이하 선택적 사용
- EX : 유효 시간을 초 단위로 선언
- PX : 유효 시간을 밀리초 단위로 선언
EX 1 ) 옵션 없는 기본형
key 가 "color" 이고, value 가 "red" 인 키-값 데이터 생성.
SET color red
EX 2 ) NX 옵션
key 가 "color" 이고, value 가 "red" 인 키-값 데이터를 생성하는데,
color 가 nil일 경우
에만 생성 (= color에 저장된 값이 없는 경우 == color를 최초 생성하는 경우 == color가 nil임 )SET color red NX
ex 2-1 ) color 가 nil 인 상태에서 명령어 실행
ex 2-2 ) color 가 nil이 아닌 상태에서 명령어 실행
set color red NX 명령어는 무시되고
이후 get color 명령 호출 결과로 기존의 값을 반환
EX 3 ) XX 옵션
key 가 "color" 이고, value 가 "red" 인 키-값 데이터를 생성하는데,
color 값이 존재하는 경우
에만 생성 (= color에 저장된 값이 있음 == color가 nil이 아님 )SET color red XX
ex 3-1 ) color 가 nil 인 상태에서 명령어 실행
set color red XX 명령어는 무시 됨
ex 3-2 ) color 가 nil이 아닌 상태에서 명령어 실행
먼저 저장되어있던 green이 set color red XX 명령어 실행 후 red로 덮어씌워진 것을 확인
EX 4 ) GET 옵션
key 가 "color" 이고, value 가 "red" 인 키-값 데이터를 생성하는데,
color 값이 존재하고 있음
👉 기존에 저장되어있던 값을
반환하고 새로운 값 저장
(= color 에 저장된 값이 있음 == color가 nil이 아님 )color 값이 존재하지 않음
👉 nil
반환하고 새로운 값 저장
ex 4-1) 새로운 키 생성 + GET
SET color red GET
ex 4-2) 존재하는 키 + GET
SET color red SET color green GET
EX 5 ) EX 옵션
key 가 "color" 이고, value 가 "red" 인 키-값 데이터를 생성하는데,
color 키가 살아있는 시간을
초
단위로 지정-- color 키 생성 및 5초 후 삭제 SET color red EX 5
타이머 켜놓고 1초에 한번씩 get color 호출로 확인 🙈
EX 6 ) PX 옵션
key 가 "color" 이고, value 가 "red" 인 키-값 데이터를 생성하는데,
color 키가 살아있는 시간을
밀리초
단위로 지정-- color 키 생성 및 0.5초 후 삭제 SET color red PX 500
타이머로 테스트하다 손이 느려서 포착할 수가 없었기 때문에 스프링 부트를 사용 😔
EX 7 ) 옵션 MIX
[NX | XX] 와 [GET] 그리고 [EX | PX] 를 섞어서 사용할 수 있다.
SET color value XX GET EX 10
color 키가 이미 존재한다면, 값이 value 인 color 키를 생성하는데, 기존의 값을 반환하고 value로 덮어씌운 뒤, 10초 뒤에 color 폭파(제거)
위 문장을 실행하기 이전에 color 키가 없는 상태였다면 위 문장은 실행에 실패하게 된다. ( color가 생성되지 않고 nil 반환 )
기존에 값이 있는 키에 대한 테스트 결과
기존에 값이 없었던 키에 대한 테스트 결과
GET
형태
GET key
값이 있는 key 를 GET 명령어로 호출하면 해당 값을 반환하고
값이 없는 key 를 GET 명령어로 호출하면 nil 을 반환한다.
MSET
multi set
1개 이상의 SET 명령을 한줄로 선언하여 실행하는 것이다.
형태
MSET key1 val1 [ key2 val2 key3 val3 ... keyN valN ]
SET 에서 사용되는 옵션들은 적용 되지 않는다.
👆 EX 1 옵션이 key-value 로 인식 된 모습
👆 NX 옵션은 value가 없는 key로 인식되어 에러 메세지가 출력되었다.
MGET
multi get
1개 이상의 GET 명령을 한번에 호출
형태
MGET key1 [ key2 key3 ... keyN ]
KEYS
다수의 key를 조회할 수 있다.
형태
KEYS pattern
pattern
ex 결과 h?llo h와 llo 사이에 문자 1개 들어가 있는 모든 key 검색 matches hello, hallo and hxllo h*llo h와 llo 사이에 아무 문자열이 들어가 있는 모든 key 검색 matches hllo and heeeello h[ae]llo h와 llo 사이에 a 또는 e가 들어가 있는 모든 key 검색 matches hello and hallo, but not hillo h[^e]llo h와 llo 사이에 e가 아닌 문자가 들어가 있는 key 검색 matches hallo, hbllo, ... but not hello h[a-d]llo h와 llo 사이에 a 또는 b 또는 c 또는 d가 들어가있는 key 검색 matches hallo and hbllo * 모든 key 검색
DEL
다수의 key를 삭제할 수 있다.
형태
DEL key [key ...]
key 1개 지움
key 여러개 지움
keys 에서 먹혔던 pattern 은 인식 안됨
'DB > Redis' 카테고리의 다른 글
- [NX | NN] : NX 또는 NN 중 1개 이하 선택적 사용