이것이 레디스다.(4)

안현수·2021년 11월 2일
0

이것이 레디스다.

목록 보기
4/4

4.1 문자열 명령어

레디스에 저장할 수 있는 문자열은 최대 512MB이며 이를 초과하면 에러메세지를 호출한다.
레디스가 문자열을 저장할 때는 인코딩된 문자열과, 부가정보들을 포함한 구조체로 변환을 하여 저장을 하게 된다. 이를 레디스 객체형이라고 한다.

127.0.0.1:6379> mset key1 value1 ket2 value2 key3 value3
OK
127.0.0.1:6379> mget key54 key1 key2 key3
1) (nil)
2) "value1"
3) (nil)
4) "value3"
127.0.0.1:6379> mset key1 value1 key2 value2 key3 value3
OK
127.0.0.1:6379> mget key54 key1 key2 key3
1) (nil)
2) "value1"
3) "value2"
4) "value3"

레디스는 mset과 mget이라는 문자열 저장, 호출 명령어를 지원한다.
m은 multi의 줄임말이다.
mget시 없는 key에 대해서는 (nil)을 호출하고, mset은 항상 성공한다.

그럼, 만약 mset시 하나라도 이미 존재하는 키가 있다면 모두 저장하지 않는다면 어떻게 해야 될까.
그럴때는 msetnx를 사용하면 된다.

127.0.0.1:6379> mset nx:key1 value1 nx:key3 value3
OK
127.0.0.1:6379> setnx nx:key3 'new value'
(integer) 0
127.0.0.1:6379> mget nx:key1 nx:key3
1) "value1"
2) "value3"
127.0.0.1:6379> msetnx nx:key2 'new value2' nx:key3 'new value3'
(integer) 0
127.0.0.1:6379> mget nx:key1 nx:key2 nx:key3
1) "value1"
2) (nil)
3) "value3"

getset명령어는 이미 존재하는 value를 반환하고 새로운 value를 입력하는 명령어이다.

127.0.0.1:6379> set mykey1 'old value'
OK
127.0.0.1:6379> getset mykey1 'new value'
"old value"
127.0.0.1:6379> getset newkey 'sample'
(nil)
127.0.0.1:6379> get newkey
"sample"

만약 이미 존재하는 key가 없다면 (nil)을 반환하고 새로운 value를 입력한다.

레디스는 비트연산으로 비트단위로 처리할 수 있다.

profile
백엔드 개발자 안현수입니다.

0개의 댓글