2019. 5. 27. 19:41ㆍRedis
이번에는 Redis의 Data Type인 String에 대해 알아보겠습니다 .
Strings are the most basic kind of Redis value. Redis Strings are binary safe, this means that a Redis string can contain any kind of data, for instance a JPEG image or a serialized Ruby object.
A String value can be at max 512 Megabytes in length.
You can do a number of interesting things using strings in Redis, for instance you can:
- Use Strings as atomic counters using commands in the INCR family: INCR, DECR, INCRBY.
- Append to strings with the APPEND command.
- Use Strings as a random access vectors with GETRANGE and SETRANGE.
- Encode a lot of data in little space, or create a Redis backed Bloom Filter using GETBIT and SETBIT.
Check all the available string commands for more information, or read the introduction to Redis data types.
https://redis.io/topics/data-types
Redis 의 공식홈페이지에 있는 Data Type String에 대한 설명입니다 .
Redis에서의 String은 가장 기본적인 유형의 값이다 .
String에는 JPEG 이미지 or 직렬화된 객체와 같은 모든 데이터를 포함할 수 있다 .
String 의 데이터 최대 크기는 512MB입닌다 .
String은 문자열이지만 숫자도 저장이 가능하다 또한 incr , incrby , decr , decrby와 같은 automic counter 연산이 가능하다 .
Stroing에는 24가지의 Command가 지원된다 24가지를 다 하려고 한다면 너무 많으니 핵심적으로 쓰는 Command를 위주로 설명을 하도록 하겠습니다 .
SET , GET
SET와 GET 은 말 그대로 값을 SET하고 값을 GET할때 사용하는 String Commant 입니다. 실습에 대한 예제는 localhost에서 동작한 결과입니다 .
SET을 통해 NAME이라는 KEY로 "YUNJIN CHOI"라는 VALUE를 저장하고
그다음 GET Command를 통해 NAME이라는 KEY값을 불러오는 예제입니다 .
주의 해야할 점은 Redis 의 KEY는 대,소문자를 구분하기 때문에 대소문자 오탈자가 없는지 확인해주시기 바랍니다 .
이 외에에도 Options로 EX , PX , NX , XX가 존재합니다
- EX seconds -- Set the specified expire time, in seconds.
- PX milliseconds -- Set the specified expire time, in milliseconds.
- NX -- Only set the key if it does not already exist.
- XX -- Only set the key if it already exist.
Redis 공식 홈페이지에 있는 SET Option 입니다 . 한글로 번역해서 확인하면 다음과 같습니다 .
EX seconds 는 SET KEY VALUE EX seconds 와 같이 사용하면 됩니다 . KEY에게 만료시간을 주고 해당 만료시간(초) 가 지나면 KEY가 삭제가 됩니다 .
PX milliseconds는 SET KEY VALUE PX milliseconds 와 같이 사용하며 만료시간을 밀리초 단위로 설정합니다 .
NX는 해당되는 키가 없는 경우에만 KEY를 설정합니다 이말은 이미 기존에 KEY VALUE가 있다면 기존의 VALUE를 수정하지 않는다는 말입니다 .
XX는 NX와 반대로 키가 이미있는 경우에만 설정하는 옵션입니다 . 이말은 즉 , 키가 없다면 키생성을 하지 않고 키가 있다면 수정을 하게 됩니다 .
INCR , INCRBY , DECR , DECRBY
INCR , INCRBY , DECR ,DECRBY는 증가 or 감소와 관련된 Command입니다 .
INCR은 키에 저장된 수를 1씩 증가시키고 키가 존재하지 않으면 1을 증가시키기 전에 해당 KEY값을 0으로 초기화를 합니다 .
DESC은 1씩 감소합니다 나머지는 INCR과 같습니다.
그렇다면 뒤에 BY가 붙었다면 어떤 행동을할까요. 그것은 1씩 증가하는게 아닌 사용자가 지정해준 값만큼 증가 or 감소 시킬수가 있습니다 . 예제로 확인해 보도록 하겠습니다 .
주의할 점은 해당 KEY에 대한 값이 정수로 표시할수 없는 문자열을 포함하고있으면 안된다는 점입니다 .
INCR을 통해 AGE를 사용했을시 26 에서 27로 변하여 저장된것 을 확인할 수 있습니다 .
DECR을 통해 INCR을 사용하여 1을 증가시킨 AGE를 사용했을때 1이 감소하는것을 확인할 수 있습니다 .
INCRBY , DECRBY는 간단하게 설명하고 넘어가겠습니다 다음과 같이 KEY의 뒤에 증가할만큼의 숫자만큼 암력해 주시면 됩니다 .
MGET , MSET
MGET 과 MSET은 기존의 GET , SET과 비슷하지만 다른점은 지정된 모든키의 값을 가져오고 , 지정된 모든 키를 각각의 값으로 저장한다는점의 차이가있습니다 .
MSET을 통해 A :65 , B : 66 , C : 67의 값을 저장하였고 keys *를 통해 KEY들을 확인해보면 3개가 저장된것을 볼수있고 MGET을 통하여 3개의 값들을 동시에 가져올 수 있습니다.
참고할 내용은 MGET은 입력된 모든 KEY에 대한 값을 반환하기때문에 보유하지 않거나 존재하지 않는 모든키에대해서는 nil이라는 값으로 리턴한다 따라서 작업이 실패하지 않습니다 , 그리고 MSET은 SET과 마찬가지로 기존값을 새값으로 바꾼다 . 기존 값을 덮어쓰지 않으려면 MSETNX Command를 참고하면 된다 .
STRLEN
STRLEN Command는 KEY에 저장된 값에 대한 길이를 Return 해줍니다 .
NAME이라는 KEY에는 YUNJIN CHOI 값이 저장되어있으며 STRLEN을 하여 KEY조회시 11이라는 RETURN 값을 볼 수 있습니다 (스페이스 값 포함) 만약 STRLEN을하였는데 해당 KEY가 없다면 0 이 출력됩니다.
APPEND
APPEND Command는 key가 이미 있고 문자열인 경우 기존에 있던 문자열의 끝에 문자열을 추가해 준다 .
만약 Key가존재 하지 않는다면 빈 String을 생성하여 APPEND하게 된다.
다음과 같이 NAME이라는 Key는 존재 하지 않았지만 APPEND 시 길이 6의 문자열이 추가된것을 확인할 수 있으며 최종적으로는 저의 이름이 APPEND되어 출력된것을 확인할 수 있습니다 .
String Data Type은 이정도만 정리하고 넘어가도록 하겠습니다 . 실제 String Command에는 다양한 동작을 하는 Command들이 많이있습니다. 저는 가장 기본적은것들을 위주로 했기때문에 더 궁금한 Command들은 공식 홈페이지에서 확인하시면 좋을것 같습니다 .
'Redis' 카테고리의 다른 글
[Redis] Redis Command "Connection" (0) | 2019.05.20 |
---|---|
[Redis] Redis 란 무엇인가 ( 공식 홈페이지 Document 작성 ) (0) | 2019.05.20 |