본문 바로가기

좋아하는 것_매직IT/9.redis

2.Redis, 레디스의 기본명령어에 대해서 알아볼까요?

반응형

레디스의 기본명령어

  •  레디스가 지원하는 데이터형
    • 문자열, 리스트, 셋, 정렬된 셋, 해시 등등
  • 저장된 데이터형에 따라서 처리할 수 있는 명령이 달라짐.
    • 레디스 명령은 대소문자를 구별하지 않음.
  • 관례상 콜론(:)은 키에 의미를 부여하는 구분자로 사용됨.
  • 응답값을 가지는 레디스 명령은 상태응답, 에러응답, 숫자응답, 단일 벌크응답, 멀티 벌크응답으로 나눠짐.
  • 레디스 명령의 인덱스표현에서 '0'은 처음, '-1' 은 마지막 자리를 의미함.
    • 음수가 입력되면, 인덱스를 맨 마지막부터 셈
      •  예) '-2' 일 경우 맨 마지막에서 두번째의 인덱스를 나타냄.
  • 레디스는 약 150여개의 명령을 지원하며 버전업을 거듭할수록 새로운 명령이 계속 추가되고 있음 
  • 예제 실행
    • 대화형 레디스 클라이언트 redis-cli를 사용함.

 

 문자열 명령

  • 문자열을 다루는 데 사용하는 레디스 문자열 명령은 약 20여개
  • 주요명령
    • set 
      • 주어진 키에 값을 저장함.
      • 하나의 키와 하나의 값을 저장할 수 있음.
      • 명령)set [key] [value]
      • 응답)<상태응답>, 항상 OK
    • get
      • 주어진 키에 값을 읽어옴.
      • 명령)get [key]
      • 응답)<키에 대한 값>
    • append
      • 주어진 키가 존재하면, 함께 입력된 값을 이미 저장되어 있는 제일 마지막 값의 뒤에 추가함.
        • 단, 문자열값만 유효함.
      • key 가 존재하지 않으면, 새로운 set 명령과 동일하게 동작.   
      • 명령)append [key] [value]
      • 응답)<숫자응답>, 추가된 문자열을 포함한 전체 문자열의 길이
    • incr
      • 저장된 데이터의 값을 1 증가시키고, 그 결과값을 반환함.
        • 단, 저장된 값이 숫자일때만 수행됨.
      • 명령)incr [key] 
      • 응답)<숫자응답>, 명령이 실행된 후의 키의 값  
    • decr
      • 저장된 데이터의 값을 1 감소시킴
        • 단, 저장된 값이 숫자일때만 수행됨.
      • 명령)decr [key]
      • 응답)<숫자응답>, 명령이 실행된 후의 키의 값
  • 예제

리스트 명령

  • 레디스에서 지원하는 리스트 데이터를 다루기 위한 명령의 집합임.
  • 논리적으로 링크드리스트의 구현.
  • 리스트 데이터의 특징은 연결리스트의 특성인 입력 순서의 유지.
  • 데이터가 입력된 순서대로 저장되고, 조회되기 때문에 먼저 입력한 자료를 먼저 처리하는 큐로 사용되기도함.
  • 주요명령
    • lpush 
      • 지정된 리스트의 맨 앞쪽에 입력된 요소를 저장함.    
      • 명령)lpush [key] [value1] [value2] ....
      • 응답)<숫자응답>, 명령이 수행되고 난 후의 요소 수
    • lrange  
      • 지정된 리스트의 시작인덱스부터 종료인덱스 범위의 요소를 조회함.
      • 명령)lrange [key] [start index] [end index]
      • 응답)<멀티벌크응답>, 해당 범위의 요소들, 존재하지 않을 때는 nil
  • 예제

셋 명령

  • 레디스에서 지원하는 셋 데이터를 다루는 명령의 집합.
  • 레디스의 셋 데이터는 순서가 보장되지 않고 중복을 허용하지 않는 컬렉션임.
    • 즉,입력 순서와 상관없이 중복된 데이터가 제거되어 조회됨.
  • 주요명령
    • sadd
      • 지정된 셋에 입력된 값을 저장함.
      • 명령)sadd [key] [value]
      • 응답)<숫자응답>, 성공이면 입력된 값의 개수, 이미 존재하는 값이면 0
    • smembers
      • 지정된 셋에 저장된 모든 값의 목록을 조회함.
      • 명령)smembers [key]
      • 응답)<멀티벌크응답>, 조회된 값 목록, 값이 존재하지 않을 때 nil
  • 예시

정렬된 셋 명령

  • 레디스에서 지원하는 정렬된 셋 데이터를 다루는 명령의 집합.
  • 정렬된 셋 데이터형은 가장 많이 사용되고, 다양한 분야에 활용됨.
  • 정렬된 셋은 레디스에서 지원하는 "셋 데이터"와 동일한 특징을 가지며, 부가적으로 저장된 요소에 가중치를 부여하여 작은 값부터 큰 값으로(오름차순) 정렬을 제공함.
  • 주요명령
    • zadd
      • 정렬된 셋에 가중치와 값으로 이루어진 데이터를 저장함.
        • 단, 이미 존재하는 값일때는 기존의 가중치를 입력된 가중치로 덮어씀.
      • 명령)zadd [key] [score] [value]
      • 응답)<숫자응답>, 성공이면 입력된 값의 개수, 이미 존재하는 값이면 0
    • zrange
      • 정렬된 셋의 시작인덱스부터 종료인덱스 범위에 해당하는 값들을 가중치 오름차순으로 조회함.
      • 명령)zrange [key] [start index] [end index] withscores
        • withscores
          • 해당 기능은 가중치를 함께 조회함.
          • optional    
      • 응답)<멀티벌크응답>, 조회된 값 목록, 값이 존재하지 않을때 nil
  • 예시

해시 명령

  • 레디스에서 지원하는 해시 데이터를 다루는 명령의 집합
  • 키와 값이 쌍으로 이루어진 데이터를 저장하는 자료구조, 많은 개발자에게 친숙한 데이터형.
    • 예를 들면, 자바등에서 지원 MAP과 동일한 구조임.
  • 주요명령
    • hset
      • 지정된 해시에 요청한 필드와 값을 저장함.
        • 단, 요청한 필드가 존재할 때는 저장된 값이 업데이트됨.
      • 명령)hset [key] [field_name] [value]
      • 응답)<숫자응답>, 존재하지 않는 필드일때 1, 존재하는 필드일때 0
    • hget
      • 지정된 해시에 저장된 필드의 값을 조회함.
      • 명령)hget [key] [field_name]
      • 응답)<벌크응답>, 지정된 필드가 존재할 때 저장된값, 아니면 nil
    • hgetall
      • 지정된 키에 저장된 모든 필드의 값을 조회한다.
      • 명령)hgetall [key]
      • 응답)<멀티 벌크응답>, 지정된 키에 저장된 모든 필드와 값의 목록
  • 예시

결론

  • 레디스가 지원하는 다섯가지 데이터형에 대해서 간단히 알아봄.
    • 문자열, 리스트, 셋, 정렬된 셋, 해시
  • 사용해본결과 레디스는 명령을 사용하기가 쉽고 단순함.
  • 단순함은 레디스가 추구하는 것이고, 그런 부분으로 인해 아직도 많은 개발자에게 좋은 평가를 받고 있음.
  • 현재, 위에서 소개한 명령이외에도 많은 명령어가 사용되고 버전업과 동시에 또 많은 명령이 생겨나고 있음.
728x90
300x250