먼저 어떤 환경에서 실행할까
Redis를 배우는 가장 좋은 방법은 직접 서버를 띄우고 명령어를 입력해 보는 것이다. 설치 방식은 크게 세 가지다.
첫째, Docker를 사용하는 방법이다. 운영체제에 Redis를 직접 설치하지 않고 컨테이너 안에서 실행한다. 학습용으로 가장 추천한다. 설치와 삭제가 쉽고, 실습 중 데이터가 꼬여도 컨테이너를 지우고 다시 만들면 된다. Redis 공식 문서에서도 Docker 이미지를 내려받아 기본 포트인 6379번으로 실행하는 방식을 안내한다.1
둘째, 로컬 패키지로 설치하는 방법이다. macOS에서는 Homebrew, Ubuntu에서는 apt 같은 패키지 관리자를 사용할 수 있다. 매번 Docker 명령을 입력하지 않아도 되므로 편하지만, 운영체제 환경에 Redis 설정 파일과 데이터 파일이 남는다. 나중에 여러 버전을 바꿔 가며 실습할 때는 오히려 불편할 수 있다.
셋째, 클라우드 Redis를 사용하는 방법이다. AWS ElastiCache, Google Memorystore, Azure Cache for Redis, Redis Cloud 같은 관리형 서비스를 의미한다. 실제 운영 환경과 비슷한 경험을 할 수 있지만, 처음 배우는 단계에서는 네트워크, 보안 그룹, 인증, 비용 같은 부가 요소가 학습을 방해할 수 있다. 클라우드 환경은 운영을 다루는 뒤쪽에서 다시 보는 편이 좋다.
이 장에서는 Docker를 기준으로 진행한다. Docker가 없다면 로컬 설치를 사용해도 된다. 중요한 것은 redis-server가 실행 중이고, redis-cli로 접속할 수 있는 상태를 만드는 것이다.
AI 생성 이미지
Docker로 Redis 실행하기
먼저 Redis 이미지를 내려받는다.
docker pull redis:latest이미지를 내려받았다면 다음 명령으로 Redis 컨테이너를 실행한다.
docker run -d --name redis-study -p 6379:6379 redis:latest각 옵션의 의미는 단순하다.
-d: 백그라운드에서 실행한다.--name redis-study: 컨테이너 이름을redis-study로 정한다.-p 6379:6379: 내 컴퓨터의 6379번 포트를 컨테이너의 6379번 포트와 연결한다.redis:latest: 사용할 Redis 이미지다.
실행 상태를 확인한다.
docker ps목록에 redis-study가 보이면 Redis 서버는 실행 중이다. 이제 컨테이너 안의 redis-cli를 열어 보자.
docker exec -it redis-study redis-cli정상적으로 접속되면 다음과 비슷한 프롬프트가 보인다.
127.0.0.1:6379>이 프롬프트는 현재 127.0.0.1 주소의 6379 포트에 연결되어 있다는 뜻이다. Redis의 기본 포트는 6379다.
실습을 끝낸 뒤 컨테이너를 멈추려면 다음 명령을 사용한다.
docker stop redis-study다시 시작하려면 다음과 같이 입력한다.
docker start redis-study완전히 삭제하려면 먼저 멈춘 뒤 제거한다.
docker rm redis-study만약 같은 이름의 컨테이너가 이미 있다는 오류가 나온다면, 이전에 만든 redis-study 컨테이너가 남아 있는 것이다. 이때는 docker start redis-study로 다시 시작하거나, 필요 없다면 멈춘 뒤 docker rm redis-study로 삭제하고 새로 만들면 된다.
학습 단계에서는 영속성 설정을 일부러 단순하게 두는 것이 좋다. 지금은 컨테이너를 지우면 실습 데이터도 함께 사라지는 구성이 오히려 편하다. 컨테이너를 지워도 데이터가 남아야 하는 실습은 영속성과 백업을 다룰 때 다시 살펴본다.
로컬에서 실행한다면
로컬에 Redis를 설치한 경우에는 보통 서버와 클라이언트를 따로 실행한다.
서버 실행 명령은 다음과 같다.
redis-server다른 터미널을 열고 클라이언트를 실행한다.
redis-cli접속 후 프롬프트가 보이면 Docker 방식과 동일하게 실습하면 된다.
만약 redis-cli를 입력했는데 command not found가 나온다면 Redis 클라이언트가 설치되어 있지 않거나 PATH가 잡혀 있지 않은 것이다. Docker를 사용 중이라면 앞에서 본 것처럼 docker exec -it redis-study redis-cli로 컨테이너 안의 클라이언트를 실행하면 된다.
첫 명령어: PING, SET, GET, DEL
이제 Redis에 첫 명령을 보내 보자.
PING응답은 다음과 같다.
PONGPING은 서버가 살아 있는지 확인하는 가장 단순한 명령이다. 애플리케이션에서 Redis 연결 상태를 점검할 때도 자주 사용한다.
다음은 값을 저장해 보자.
SET greeting helloRedis는 성공하면 보통 다음처럼 응답한다.
OKSET은 문자열 값(String value)을 저장하는 명령이다. 여기서는 greeting이라는 키에 hello라는 값을 저장했다.
값을 읽을 때는 GET을 사용한다.
GET greeting응답은 다음과 같다.
"hello"실제 redis-cli에서는 문자열 값이 큰따옴표로 감싸여 보일 수 있다. 중요한 것은 큰따옴표 자체가 아니라 greeting 키에 저장된 값이 hello라는 점이다.
키를 삭제할 때는 DEL을 사용한다.
DEL greeting응답은 정수로 나온다.
(integer) 1여기서 1은 삭제된 키의 개수다. 이미 없는 키를 삭제하면 어떻게 될까?
DEL greeting(integer) 0에러가 아니라 0이 나온다. 삭제할 대상이 없었다는 뜻이다. Redis 명령은 이처럼 응답 타입을 보면 성공 여부와 처리 결과를 알 수 있다.
숫자도 문자열로 저장된다
Redis의 기본 값은 문자열이다. 하지만 문자열 안에 숫자가 들어 있으면 숫자 연산 명령을 사용할 수 있다.
SET count 1
GET count"1"이제 값을 1 증가시킨다.
INCR count(integer) 2INCR은 값을 숫자로 해석해 1 증가시킨다. 이때 결과는 정수 응답으로 나온다. 저장된 값은 문자열이지만, Redis가 그 문자열을 정수로 해석할 수 있으면 이런 숫자 연산을 적용할 수 있다.
숫자로 해석할 수 없는 값에 INCR을 실행하면 에러가 발생한다.
SET count hello
INCR count(error) ERR value is not an integer or out of range이 메시지는 값이 정수가 아니거나 Redis가 처리할 수 있는 범위를 벗어났다는 뜻이다. 처음에는 에러 메시지가 낯설 수 있지만, 대부분 원인을 직접 말해 준다. Redis를 사용할 때는 에러 문장을 끝까지 읽는 습관이 중요하다.
데이터베이스 선택과 비우기
Redis에는 번호로 구분되는 논리 데이터베이스가 있다. 기본 접속 위치는 0번 데이터베이스다. redis-cli 프롬프트에서 다음 명령을 입력해 보자.
SELECT 1OK이제 프롬프트가 다음처럼 바뀔 수 있다.
127.0.0.1:6379[1]>대괄호 안의 [1]은 현재 1번 데이터베이스를 사용 중이라는 뜻이다.
0번 데이터베이스에 저장한 count를 1번에서 조회하면 어떻게 될까?
GET count(nil)(nil)은 값이 없다는 뜻이다. 키가 존재하지 않거나, 선택한 데이터베이스가 다를 때 볼 수 있다.
다시 0번으로 돌아간다.
SELECT 0현재 데이터베이스에 키가 몇 개 있는지 확인하려면 DBSIZE를 사용한다.
DBSIZE(integer) 1학습 중 현재 데이터베이스를 깨끗이 비우고 싶다면 FLUSHDB를 사용할 수 있다.
FLUSHDBOKFLUSHDB는 현재 선택한 데이터베이스의 모든 키를 삭제한다. 실습 환경에서는 편리하지만 운영 환경에서는 매우 위험하다. 비슷한 명령으로 FLUSHALL도 있는데, 이것은 모든 데이터베이스를 비운다. 실무 서버에서는 권한을 제한하거나 명령 자체를 비활성화하는 경우가 많다.
이 책의 실습에서는 데이터가 꼬였을 때 SELECT 0으로 돌아간 뒤 FLUSHDB를 실행해 초기화하면 된다. 단, 회사나 클라우드의 실제 Redis에서는 절대 습관처럼 입력하지 말자.
redis-cli를 편하게 쓰는 법
redis-cli는 단순한 터미널 도구지만 학습과 디버깅에 매우 유용하다.
먼저 명령어는 대소문자를 구분하지 않는다.
set name redis
get name위 명령도 동작한다. 하지만 문서와 예제에서는 보통 명령어를 대문자로 쓴다. 이 책도 명령어는 SET, GET처럼 대문자로 표기한다.
둘째, 위아래 방향키로 이전 명령을 다시 불러올 수 있다. 같은 키를 바꿔 가며 테스트할 때 편하다.
셋째, 일부 환경에서는 탭 키로 자동완성을 사용할 수 있다. G를 입력한 뒤 Tab을 눌러 GET 같은 명령을 완성할 수 있다. 자동완성이 되지 않아도 문제는 아니다. Redis 명령은 짧고 규칙적인 편이라 금방 익숙해진다.
넷째, 접속하지 않고 한 번만 명령을 실행할 수도 있다.
docker exec -it redis-study redis-cli PINGPONG운영 점검 스크립트나 간단한 상태 확인에서는 이런 방식이 유용하다. 스크립트에서 사용할 때는 대화형 터미널 옵션인 -it를 빼고 실행하는 경우도 많다.
다섯째, 명령어의 응답 타입에 익숙해져야 한다.
OK: 명령이 정상 처리되었다.(integer) 1: 정수 결과다. 삭제 개수, 증가 결과, 존재 여부 등에 사용된다."hello": 문자열 값이다. 환경이나 출력 옵션에 따라hello처럼 따옴표 없이 보일 수도 있다.(nil): 값이 없다.(error) ...: 명령 실행 중 오류가 발생했다.
Redis는 응답이 단순하다. 그래서 처음에는 명령어보다 응답을 읽는 연습이 더 중요하다. 내가 보낸 명령이 값을 만들었는지, 읽었는지, 지웠는지, 아무것도 하지 않았는지 응답만 보고 판단할 수 있어야 한다.
이번 장에서 만든 감각
이번 장의 목표는 Redis를 완벽히 설치하는 것이 아니다. Redis 서버를 실행하고, redis-cli로 접속하고, 키와 값을 직접 넣고 지우는 감각을 만드는 것이다.
지금까지 우리는 다음을 확인했다.
Redis 서버는 기본적으로 6379번 포트에서 동작한다.
redis-cli는 Redis에 명령을 보내는 기본 도구다.PING으로 연결 상태를 확인할 수 있다.SET,GET,DEL로 값을 저장하고 읽고 삭제할 수 있다.숫자로 해석할 수 있는 문자열에는
INCR같은 숫자 연산을 적용할 수 있다.SELECT,DBSIZE,FLUSHDB로 학습용 데이터베이스를 관리할 수 있다.Redis 응답은 타입을 보면 의미를 파악할 수 있다.
다음 장에서는 아무 키나 만드는 단계를 넘어, 키 이름을 어떻게 설계하고 데이터에 어떤 생명주기를 줄지 다룬다. Redis는 빠르지만, 키가 늘어나고 만료 정책이 없으면 금방 관리하기 어려워진다. 그래서 실습 초반부터 키 설계와 TTL을 함께 익혀야 한다.
참고
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.