Redis란?

윤태호·2023년 2월 13일
1

TechTalk

목록 보기
1/8

기업 우대 조건이나 대기업들의 Tech 블로그를 보면 Redis에 대해 종종 다룬다. 도대체 무엇이길래 다들 다루는거지 궁금해서 공부를 하며 정리하여 담아보려한다.

Redis?

  • Key, Value로 이루어진 비정형 데이터를 저장하고 비관계형 인메모리 데이터 베이스입니다.(InMemory+NoSql)

왜 쓰는 걸까?

우리는 이미 Mysql, oracle, MongoDB 등 다양하고 안전한 데이터베이스를 가지고 있습니다. 그런데 왜 쓸까?

  • 인메모리 특성상 기존 DB들 보다 빠르다
  • 다양한 자료형을 지원한다.

기존 DB보다 빠르다.

우리가 흔히 생각하는 DB들은 우리가 알고 있는 DISK(HDD,SDD)에 저장하고 그 곳에서 CRUD들이 일어난다.
우리는 하지만 DISK 말고도 빠르게 접근 할 수 있는 RAM을 알고 있고 활용할 수 있다.
그것을 이용한 데이터베이스를 인메모리 DB라 부르며 Redis도 그 중 하나이다.
RAM은 접근이 빠르며, 우리는 주로 Cache메모리로 쓴다. 그렇기에 서버까지 갈 필요없이 Cache에 저장하고 우리가 빠르게 필요할 때 쓰는 것이다. 그러면 단점은 없는 것인가?

  • 비싸다.(RAM은 우리가 생각하는 디스크에 많이비싸다.(즉 크기에 한계가 있다)
  • 서버에 저장하지 않으므로 에러가 생기면 데이터가 날아간다.

다양한 자료형을 지원한다.

KEY, Value의 형태의 자료구조를 생각해보면 dic, hashtable을 생각할 수 있다. 아래와 같이 다양한 형태의 데이터 형태를 지원한다.

  • 문자열(string)
  • 해시(hashes)
  • 리스트(list)
  • 집합(sets)
  • 정렬된 집합(sorted sets)
  • 비트맵(bitmap)
  • 하이퍼로그 로그(hyperloglog)
  • 지리공간 인덱스(geospatial indexes)
  • 스트림(streams)
    굳이 우리가 Sort를 조건문에 걸지않아도 괜찮은 점 등 다양한 장점들이 된다.

그러면 단점은??

  1. 비싸고 용량의 제한이 있다.
  • 메모리의 한계를 극복하기 위해, SWAP이라는 DISK의 자리를 떼어서 쓰는 것인데 이 과정은 레이턴시가 크다
  • redis는 메모리에 어느 정도 쓸지 미리 할당을 한다. 그런데 만약 개발하고 나니 적게 쓰면 우리는 메모리를 헛되게 쓰고 있는 상황이 연출될 수도 있다. 즉 개발자가 고려해야할 조건이 많아진다.
  1. 싱글 스레드이다.
  • 싱글 스레드이기 때문에 O(N)같이 처리속도가 오래 걸리는 처리는 안쓰도록 유의 해야한다.

결론

그럼에도 불구하고 높은 처리 속도를 보여주기에 대부분 기존에 있던 DB와 함께 Redis를 활용한다. 특히 자주 쓰는 데이터 및 자주 바뀌는 데이터들은 Cache에 Redis를 활용하면 매우 이점이 크다고 한다. 그래서 다들 쓰는거 같습니다. 추가적으로 sort와 set같은 자료 구조를 쓸 수 있으니 최근 검색어, 순위 매기는 데이터들을 저장하기 좋다고 합니다.

profile
성장하는것을 제일 즐깁니다.

0개의 댓글