본문 바로가기
Redis

Redis 설치 및 문법

by 이상한나라의개발자 2023. 12. 11.

Redis 설치

 

  • 소스와 바이너리 형태로 제공됨
  • 주로 Linux에 설치해서 사용
  • 소스 빌더, 바이너리 다운로드, 패키지 관리자 등 다양한 방법으로 설치 가능
  • 리눅스 설치
  • MacOS Redis 설치
    • brew install redis
  • MacOS Docker을 이용한설치 ( 추천 ) 

도커 실행 화면

 

설치가 끝났다면 터미널에서 docker version 명령어 입력하여 도커의 정상 설치 여부를 확인 합니다.

  • docker version
  • docker registry 에서 redis 이미지 불러오기
    • docker pull redis
  • redis 실행 ( -d 옵션을 주지 않을 경우 Ctrl + C 로 종료 해야 합니다 )
    • redis 도커 컨테이너 실행 : docker run --name redis-container -p 6379:6379 -d redis
      • --name redis-container : 컨테이너의 이름을 redis-container 로 설정합니다.
      • -p 6379:6379 : 호스트의 6379 포트와 컨테이너의 6379 포트를 연결합니다.
      • -d : 컨테이너를 백그라운드에서 실행합니다.
      • redis : 실행할 이미지의 이름
  • redis 중단
    • docker stop my-redis
  • redis 시작 
    • 컨테이너 확인 : docker ps -a
    • redis 구동 : docker start [container id or name]

 

Redis 커맨드 

 

redis 컨테이너 구조

 

  • redis-server : 레디스 서버
  • redis-cli : 레디스 서버에 커맨드를 실행할 수 있는 인터페이스
  • docker container 안에서 shell 실행
    • docker exec -it my-redis /bin/sh
  • container 내부 쉘에서 redis-cli 실행 ( 호스트와 포트를 지정하지 않으면 127.0.0.1:6379 사용 )
    • redis-cli
  • Redis 커맨드 사용
    • 127.0.0.1:6379> set key1 banana
    • 127.0.0.1:6379> get key1

 

Redis 주요 명령어

 

keys * or keys pattern 명령어는 전체 키를 가져오기 때문에 성능에 문제가 발생할 수 있습니다. 

대규모 데이터베이스에서 키를 안전하게 나열하기 위해 scan 명령어를 사용하는 것이 좋습니다. scan은 커서 기반의 반복자를 제공하여 데이터베이스를 작은 덩어리로 검색합니다. 이는 대규모 데이터 셋에서도 효율적 입니다.

 

scan cursor [match pattern] [count count]

 

dbsize : 키의 개수 반환 

flushall : 전체 키 삭제

 

키 관리     
  del key 키를 삭제 합니다.
  expire key seconds 키에 만료 시간을 설정합니다.
  ttl key 키의 남은 시간을 반환합니다.
-1 : 키의 만료 시간이 지정되지 않아 계속 보관 되는 상태이며, redis 서버가 재시작 되면 사라진다.
  keys pattern 패턴과 일치하는 모든 키를 나열 합니다.
문자열(string)    
  set key value 키에 값을 설정합니다.
  get key 키의 값을 가져옵니다.
  incr key 숫자 값을 1 증가 시킵니다.
  decr key 숫자 값을 1 감소 시킵니다.
  mset mine milk yours coffee 여러 키에 대한 값을 한번에 저장한다.
mset key value key value
  mget mine yours 여러 키에 대한 값을 한번에 얻어온다.
mset key1 key2
리스트(list)
Linked-list 형태의 자료구조 ( 인덱스 접근은 느리지만 데이터 추가/삭제가 빠름 )
Queue와 Stack로 사용할 수 있음
   
  lpush key value 리스트의 왼쪽에 값을 추가합니다.
  rpush key value 리스트이 오른쪽에 값을 추가합니다.
  lpop key 리스트의 왼쪽에서 값을 꺼냅니다.
  rpop key 리스트의 오른쪽에서 값을 꺼냅니다.
  lpush mylist leftvalue
rpush mylist rightvalue
lrange mylist 0 -1( 마지막 아이템을 -1)
lpop mylist
rpop mylist
llent key : 값이 몇개가 있는지
셋(set)
순서가 없는 유니크한 값의 집합
검색이 빠름
개별 접근을 위한 인덱스가 존재하지 않고, 집합 연산이 가능함(교집합. 합집합 등)
   
  sadd key value 셋에 값을 추가합니다.
  srem key value 셋에서 값을 제거 합니다.
  scard key set에 저장된 아이템 개수를 반환한다.
  smembers key 셋의 모든 멤버를 나열합니다.
  sismember key value 셋에 특정 값이 있는지 확인합니다.
  spop key 
spop key [count]
-> 이 명령은 키에서 한개 또는 count 만큼 키를 꺼냅니다. 그리고 꺼내어진 키는 삭제 됩니다.
해시(hash)
하나의 key 하위에 여러개의 field-value 쌍을 저장
여러 필드를 가진 객체를 저장하는 것으로 생각할 수 있음
hincrby 명령어를 사용해 카운터로 활용 가능
   
  hset key field value field value 해시의 필드에 값을 설정합니다.
  hget key field 해시의 필드 값을 가져옵니다.
  hdel key field 해시의 필드를 삭제합니다.
  hkeys key 전체 키를 확인한다.
  hmget kye field field.. 여러개의 필드를 한번에 가져옵니다.
  hincrby key viewcount1 특정 필드의 값을 integer로 취급하여 지정한 숫자를 증가시킨다.
Sorted Set
Set과 유사하게 유니크한 값의 집합
각 값은 연관된 score를 가지고 정렬되어 있음
정렬된 상태이기에 빠르게 최소/최대값을 구할 수 있음
순위계산, 리더보드 구현 등에 활용
   
  zadd myrank 10 apple 20 banana 30 grape 정렬된 셋과 멤버와 점수를 추가합니다.
key : myrank
apple (score:10)
banana (score:20)
grape (score:30)
  zrank myrank banana 멤버의 순위를 반환 합니다.
  zrange myrank 0 1 ( 오름차순으로 정렬된 기준 ) 특정 범위의 값을 반환한다.
  zrevrank myrank apple 특정 값의 위치(순위)를 반환한다
  zrem 한개 이상의 값을 삭제한다
Bitmaps 
방문현황을 만들때 유용하다.
비트 벡터를 사용해 N개의 Set을 공간 효율적으로 저장
하나의 비티맵이 가지는 공간 42억개 정도
비트 연산 가능
   
  setbit key 10 1 비트맵의 특정 오프셋에 값을 변경한다.
key 10번째 index 1 로 변경
  getbit key 10 비트맵의 특정 오프셋 값을 반환한다.
  bitcount key 비트맵에서 1인 상태인 비트의 수를 반환
  bitop and result today yesterday 비트맵들간의 비트 연산을 수행하고 결과를 비트맵에 저장한다.

 

'Redis' 카테고리의 다른 글

Redis 리더보드 만들기  (0) 2023.12.11
서비스 속도를 높이는 캐시 레이어  (0) 2023.12.11
분산 환경에서 세션 스토어 만들기  (2) 2023.12.11
RDBMS & NoSQL & Redis  (0) 2023.12.11
Redis 소개와 특징  (0) 2023.12.11