SET message 'Hi there!'
GET message

작동 원리

위의 코드를 실행하면 입력한 문자열이 그대로 실행 중인 Redis 서버에 전송된다.
Redis에 문자열을 저장하는 명령어인 SET 다음의 단어인 message를 Redis가 확인 후 키 이름으로 사용하여 생성한다. 그 다음 'Hi there'이라는 값을 할당한다.
데이터를 저장한 후에 Redis는 OK라고 응답해 데이터가 성공적으로 저장되었다고 알린다.

GET 명령어를 사용하면 문자열을 가져올 수 있는데, Redis는 GET 명령어 다음의 단어를 확인 해 키의 이름으로 사용한다. Redis에 저장된 다양한 키 중에서 message라는 키를 찾은 후 해당하는 값인 'Hi there'을 반환한다.
GET과 SET은 문자열과 숫자만을 저장하는데 사용되는 간단한 명령어다. Redis는 다양한 타입의 데이터를 저장할 수 있다. 일반적으로 사용되는 데이터 타입으로는 리스트, 해시, 세트, 정렬된 세트가 있다.
문자열 관련 명령어

복잡해 보이지만 절반 정도는 Redis에서 데이터를 가져오는 명령어 이고, 나머지 절반 정도는 Redis에 데이터를 저장하는 명령어다.
절반 씩 나누어도 많아보이는데 Redis의 많은 명령어가 중복된 기능을 가지고 있다.
ex) GET과 GETEX는 거의 비슷하게 동작한다. GETEX를 사용하면 GET과 거의 유사한 작업을 하지만 옵션이 추가될 뿐이다. 즉, 단순한 명령어가 약간씩 변경될 뿐이다.
위의 그림에서 좀 더 그룹화 하면

GET, GETDEL, GETEX는 거의 유사한 작업을 하는 명령어다. 따라서 세 명령어가 어떻게 작동하는지 전부 외울 필요 없이 GET만 알면 되고 만약 GETDEL을 사용하면 유용할 것 같은 특수한 상황이 오면 따로 검색해서 사용 방법을 알아보면 된다. SUBSTR, GETRANGE, LCS는 특수한 경우에만 사용되며 자주 사용되지 않는 명령어다.

SET, SETNX, SETEX가 유사하게 작동하고, MSET과 MSETNX가 유사하게 작동하고, APPEND와 SETRANGE는 자주 사용되지 않는다.
redis.io/commands
Redis의 명령어에 대해 알기 위해서는 공식 문서를 이용하면 된다. Redis 코드에 라이브러리를 사용할 때도 자주 사용하게 된다.

공식문서에서 SET에 대한 문서에 들어가면 위 사진과 같은 텍스트가 있다.
SET key value
대문자로 표시된 SET 단어는 키워드다. 명령어를 실행하려면 해당 키워드를 정확히 입력해야 한다.
소문자로 표시된 단어는 개발자가 원하는 값으로 입력하면 된다. key라고 입력하는 것이 아닌 실제로 key로 사용할 이름 ex) message, name 등을 입력하면 된다.
[
EX seconds
| PX milliseconds
| EXAT unix-time-seconds
| PXAT unix-time-milliseconds
| KEEPTTL
]
[NX|XX]
[GET]
그 외의 [ ] 대괄호로 묶인 것들은 선택사항이다. | 는 OR을 의미한다. EX 인수를 넣거나 PX, EXAT, PXAT등의 인수를 넣을 수 있다. 단 EX와 PX, EXAT, PXAT 옵션들을 동시에 사용할 수 있는 것이 아닌 하나만 사용할 수 있다.
이런식으로 공식 문서를 통해 내부적으로 명령어가 어떻게 작동하는지 이해하고 실제로 어떻게 사용할지 파악할 수 있다.
key → 사용할 키의 이름을 입력
value → 저장할 값을 입력
EX | PX | EXAT | PXAT | KEEPTTL → 값의 만료 시간을 결정한다. (데이터베이스에서 자동으로 값이 삭제될 시간)
NX | XX → 키를 설정할 조건을 명시한다. 키가 설정되지 않았을 경우 또는 키가 이미 존재하는 경우에만 설정한다.
GET → GET을 입력하면 키를 설정했을 때 이전에 저장되어 있던 값을 반환한다.
GET을 활용한 예시를 보면

red를 먼저 저장하고 다시 green을 저장할 때 GET을 사용하면 이전에 저장되어 있던 red가 값으로 반환된다.
NX, XX에 대해서 살펴보면
XX


NX


EX | PX | EXAT | PXAT | KEEPTTL
EX 2 명령어를 사용하면 2초 후에 이 키-값 쌍을 자동으로 삭제한다.

PX는 밀리초 단위로 설정 가능하다.
EXAT, PXAT은 날짜와 시간을 명시해 삭제할 시점을 정할 수 있다.
KEEPTTL은 이 키에 적용되어 있는 만료 시간을 유지한다.
왜 일정 시간이 지난 후에 저장한 데이터를 자동으로 삭제할까?
Redis의 근본적인 용도를 생각하면 Redis는 본래 캐싱 서버로 설계되었다. 즉, 특정 데이터를 일정 기간 동안 저장한 다음 필요하지 않게 되면 삭제한다는 뜻이다.
만료 시간의 사용 예시





기존 데이터베이스에 접근할 필요가 없어지므로 애플리케이션이 빨라진다.
하지만 Redis는 메모리에 직접 저장하기 때문에 이렇게 계속 반복되어 쌓일 경우 메모리가 부족해진다. 따라서 이 문제를 해결하기 위해서 특정 데이터가 마지막으로 접근된지 일정한 시간이 지나면 자동으로 데이터를 삭제하게끔 하여 Redis의 공간을 확보해야 한다.
이처럼 자동 만료 시간을 설정하는 이유는 Redis의 근본적인 용도가 캐싱 서버이기 때문이다.