Published on

Redis란 무엇일까

Authors
  • avatar
    Name
    ywj9811
    Twitter

Redis란 무엇일까

redis

Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템 (DBMS)이다.

왜 사용할까

데이터 베이스가 있음에도 Redis를 사용하는 이유는 무엇일까

데이터 베이스는 데이터를 물리 디스크에 직접 쓰기 때문에 서버에 문제가 발생하여도 데이터 손실이 발생하지 않는다.

이러한 장점이 있지만 매번 디스크에 접근해야 하기 때문에 사용자가 많아질수록 부하가 많아져서 느려질 수 있다.

따라서 이런 부하의 문제를 해결하기 위해서 일부는 캐시 서버로 이용할 수 있는 이러한 Redis를 사용하는 것이다.

Redis는 캐시 서버로 데이터를 임의의 공간에 저장하여 다음에 읽을 때는 빠르게 결괏값을 받을 수 있도록 도와주는 공간이다.

Redis의 특징

  • Key, Value 구조이기 때문에 따로 쿼리를 사용하지 않는다.
  • 데이터를 디스크에 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 속도가 빠르다.
  • String, Lists, Sets, Sorted Sets, Hashes 자료 구조를 지원한다.
    • String : 가장 일반적인 Key - Value 구조
    • Sets : String의 집합으로 여러 값을 하나의 Value에 넣을 수 있다.
    • Sorted Sets : 중복된 데이터를 담지 않는 Set 구조에 정렬 Sort를 적용한 구조로 랭킹 보드 서버 같은 구현에서 사용될 수 있다.
  • Single Threaded 구조이다.
    • 한번에 하나의 명령만 처리할 수 있다.

Redis 사용시 주의점

  • 서버와 분리된 데이터 베이스가 아니기 때문에 서버에 장애가 발생했을 때 어떻게 대처할지 그에 대한 운영 플랜이 꼭 필요하다. (데이터 유실 발생 위험)
  • 메모리 관리가 중요하다.
  • 싱글 스레드기 때문에 한번에 하나의 명령어만 처리할 수 있다. 따라서 처리하는데 오래 걸리는 명령 혹은 요청은 피하는 것이 좋다.

명령어

저장

명령어설명
set key valuekey, value 저장
mset key value [key value…]여러 개의 key, value를 한번에 저장
setex key seconds valuekey, seconds, value 저장 (설정한 시간 *seconds 뒤에 소멸)

조회

명령어설명
key *현재 저장된 키값들을 모두 확인 (부하 조심)
get key지정한 key에 해당하는 value를 가져온다.
mget key [key…]여러 개의 key에 해당하는 value를 한번에 가져온다.
ttl keykey의 만료 시간을 초 단위로 보여준다.
pttl keykey 의 만료 시간을 밀리초 단위로 보여준다.
type key해당 key의 value 타입 확인

삭제

명령어설명
del key [key…]해당 key 들을 삭제

수정

명령어설명
rename key newKeykey 이름 변경
expire key seconds해당 키 값의 만료 시간 설정

기타

명령어설명
randomkey랜덤한 key 반환
ping연결 여부 확인 (”ping” 입력 시 “PONG” 이라는 응답이 와야함)
dbsize현재 사용중인 DB의 key 개수 리턴
flushallRedis 서버의 모든 데이터 삭제
flushdb현재 사용중인 DB의 모든 데이터 삭제