레디스 명령어는 서버 구현할때는 많이 필요하지만, 실제 사용할때는 보통 디버깅에서 자주 사용하게 된다. 그러다보니 사용빈도 가 높지 않기 때문에 사용할때마다 그때 그때 찾아보는 편인데, 오늘 정리한 명령어들은 실제 서비스에서 사용하는 명령어는 아니고 기본적인 레디스 명령어 예시이다. 이런 기본적인 명령어부터 눈에 익혀놓으면 좋을 것 같아 기록해두었다.
레디스 명령어 (GET과 SET)
SET 명령어 예시 10가지
SET key1 "value1" # 문자열 값 설정
SET key2 "value2" # 다른 문자열 값 설정
SET username "john_doe" # 사용자명 설정
SET age 30 # 나이 설정
SET mylist 1 2 3 # 리스트 값 설정
SET myhash field1 "value1" field2 "value2" # 해시 필드 값 설정
SET counter 10 # 카운터 값 설정
SET email "john@example.com" # 이메일 주소 설정
SET status "active" # 상태 설정
SET description "Redis is a key-value store" # 설명 설정
GET 명령어 예시
GET key1 # "value1" 반환
GET key2 # "value2" 반환
GET username # "john_doe" 반환
GET age # "30" 반환
LRANGE mylist 0 -1 # ["1", "2", "3"] 반환 (리스트 전체)
HGETALL myhash # {"field1":"value1","field2":"value2"} 반환 (해시 전체)
GET counter # "10" 반환
GET email # "john@example.com" 반환
GET status # "active" 반환
GET description # "Redis is a key-value store" 반환
자료형에 따라 가져오는 명령어가 다르기도 하기 때문에, 서비스에서 레디스에서 어떤 자료형을 사용하는지 파악하고 그에 맞는 GET, SET 명령어를 익혀두면 좋다.
레디스 대표 자료형의 명령어
문자열 명령어
SET key value # 문자열 저장
GET key # 문자열 가져오기
APPEND key "new value" # 기존 문자열에 추가
STRLEN key # 문자열 길이 확인
INCR counter # 숫자 증가
DECR counter # 숫자 감소
리스트(List) 명령어
RPUSH mylist "item1" # 리스트 끝에 아이템 추가
RPUSH mylist "item2"
LRANGE mylist 0 -1 # 전체 리스트 아이템 가져오기
LPOP mylist # 리스트 첫 아이템 제거
LLEN mylist # 리스트 길이 확인
해시(Hash) 명령어
HSET myhash field1 "value1" # 해시 필드 설정
HSET myhash field2 "value2"
HGET myhash field1 # 해시 필드 값 가져오기
HDEL myhash field2 # 해시 필드 제거
HGETALL myhash # 전체 해시 필드 가져오기
집합(Set) 명령어
SADD myset "member1" # 집합에 멤버 추가
SADD myset "member2"
SMEMBERS myset # 집합의 모든 멤버 가져오기
SISMEMBER myset "member1" # 멤버가 집합에 있는지 확인
SREM myset "member2" # 집합에서 멤버 제거
CAP 이론
레디스도 분산 시스템에서 사용되는 데이터베이스이기 때문에, CAP 이론을 책에서도 설명하고 있다. 이 이론은 분산 시스템 설계와 운영에 대한 중요한 3가지 원칙으로 구성되어 있다.
1.일관성 (Consistency): 모든 사람이 같은 정보를 볼 수 있게 하는 것. 예를 들어, 계좌 이체를 하면 동시에 모든 사람들이 이 변경을 볼 수 있어야 한다는 것.
2. 가용성 (Availability): 항상 시스템이 작동 가능한 상태를 유지하는 것. 누구든지 시스템을 사용하려고 할 때 언제나 접근 가능해야 한다는 것.
3. 분할 내성 (Partition Tolerance): 네트워크 문제가 발생해도 시스템이 계속해서 작동하는 것. 네트워크 연결이 끊겨도 시스템이 멈추지 않고 작동해야 한다는 것.
CAP 이론의 이 세가지 속성을 한번에 만족시키기는 어렵다. 예를들면 네트워크 문제가 발생했을때는 데이터가 일관되기 어려운 경우가 발생하는 것 처럼, 세가지 속성사이에는 딜레마가 존재하기 때문에 구현하면서 도메인이 어떤 것들이 더 중요한지 잘 결정해서 trade-off를 하는 수 밖에 없다. 설계할때 이런 부분들을 잘 고려해서 어떤 부분을 가져가고 어떤 부분을 포기할 것인지를 결정해야한다.
레디스 스터디를 위한 서적 및 웹사이트
레디스에서 제공하는 기본적인 명령어들을 알아보았는데, 레디스는 국내 웹서비스에서 아주 보편적으로 사용하는 데이터베이스 중 하나인데도 국내에 서적이 많이 없다. 그래도 찾다보니 Redis5 이후에 나온 Cluster, Sentinel 관련 개념들이나 동작원리를 소개한 책도 몇 권 찾을 수 있었는데, 이유를 가만 생각해보면 Redis5 이후 기능들을 대부분 운영관점에서 자주 쓰이다보니 그런 것같기도 하다.
그래서인지 레디스 기본명령어를 익힐때는 오히려 웹상에 있는 사이트들을 추천하기도 하는데 대표적인 사이트와 찾은 서적을 기록한다.
http://redisgate.kr/redis/command/set.php
https://www.yes24.com/Product/Goods/16512938
무려 2014년도 책. 레디스뿐만 아니라 NoSQL이 나오게된 배경부터 기본개념을 차근차근 설명해주는책.
https://www.yes24.com/Product/Goods/30503660
cluster, sentinel 동작원리나 기본적인 개념에대한 설명을 포함하는 서적. 기본 명령어들에 대한 예시도 다수 포함되어 있으며 가볍게 볼 수 있는 책으로 생각됨.
https://www.yes24.com/Product/Goods/7763985
아쉽게도 번역본은 없는 redis in action
'블로그 > 개발일지 (TIL)' 카테고리의 다른 글
[Spring] 요청 파라미터에서 값 가져오는 4가지 방법소개 (0) | 2024.10.16 |
---|---|
인텔리제이 Gerrit 플러그인에서 지원하는 git 명령어 정리 (0) | 2023.08.18 |
인텔리제이 git rebase 기능, 웹에서 git 연습하기, redis sentinel, cluster (0) | 2023.08.17 |
스프링 공식 튜토리얼로 실습방법, 인텔리제이 단축키 3가지 소개, lombok 설정, 타임리프, Gradle 스프링 플러그인, bootRun (2) | 2023.04.26 |
스프링 RequestMapping, 컨텍스트 호출, 배포서술자, WEB-INF (0) | 2023.03.16 |
최근댓글