Redis를 파헤쳐보자

YeJi Kim·2023년 3월 19일
2

Redis란?

  • Redis 공식 문서에 따르면 Redis는 데이터베이스, 캐시, 메시지 브로커, 스트리밍 엔진으로 사용되는 인 메모리 데이터 저장소이다.

    • Redis는 최고의 성능을 위해 메모리 내 데이터 세트와 함께 동작한다.

    인 메모리 데이터베이스란? 🧐

    간단히 말하면, 인메모리 데이터베이스는 디스크 스토리지와 같은 기존 위치가 아닌 컴퓨터 메모리에 보관되는 데이터베이스입니다. 대부분의 비즈니스 애플리케이션에서는 데이터를 저장하고 검색하는 데 걸리는 시간이 업무를 얼마나 빨리 완료할 수 있는지를 결정하는 가장 큰 요인입니다. 디스크에서 데이터를 검색하는 몇 밀리초 정도는 매우 사소해 보일 수 있지만 수천, 수백만 개의 레코드로 규모가 커지면 이러한 지연 시간이 시스템 속도와 성능에 심각하게 영향을 줄 수 있습니다. 데이터가 이미 메모리 내에 있다면 액세스는 거의 즉각적으로 이루어집니다.
    출처: SAP

  • Redis는 strings, hashes, lists, sets, sorted sets와 같은 자료구조를 제공한다.

  • Redis는 Redis Sentinel과 Redis Cluster를 제공한다.

    	> Redis Sentinel과 Redis Cluster의 차이 🧐
    > Redis Sentinel
    > 
  • Redis에서는 다음과 같은 연산들을 수행할 수 있다.

    • 문자열 추가하기
    • 해시이 값 추가하기
    • 배열에 요소 추가하기
    • 교집합, 합집합, 차집합 연산하기
    • sorted set을 통해 랭킹 구하기
  • Redis는 다음 기능들을 제공한다.

    • Transactions
      트랜잭션이란 트랜잭션으로 묶게 되면 트랜잭션 내부에서 하나의 로직이 실패하여 오류가 나게되면 모두 취소시키며 그렇지 않으면 모두 성공시키는 것이다.
    • Pub/Sub
      Publish(발행)과 Sub(구독)방식의 메시지를 패턴 검색이 가능하다. 따라서 높은 성능을 요구하는 채팅, 실시간 스트리밍, SNS 피드 그리고 서버상호통신에 사용할 수 있다.
      메시지들을 queue로 관리하지 않고, publish 하는 시점 기준으로 미리 subscribe 등록 대기 중인 클라이언트들을 대상으로만 메시지를 전달한다.
    • Lua scripting
    • Keys with a limited time-to-live
    • LRU eviction of keys
      - Automatic failover
  • 트위터, 깃허브, 스냅챗, 스택오버플로우 등 다양한 초초대기업들이 Redis를 사용 중이다.



언제 Redis를 사용해야 할까?!

좋아요 처리, 사용자 세션관리, 유저 인증 토큰 저장, 메세지 큐잉, 최근 검색 목록 등으로 사용될 수 있다.

  • 한 사용자가 한 번만 좋아요를 할 수 있도록 Redis의 set을 사용한다.
  • 정해진 시간 동안만 유저의 인증 토큰을 저장하기 위해 Redis의 TTL 기능을 사용한다.
  • 최근 검색 목록을 저장하기 위해 Redis의 sorted set을 사용한다.



[참고자료]
https://redis.io/docs/about/
https://sudo-minz.tistory.com/101
https://velog.io/@mu1616/%EB%A0%88%EB%94%94%EC%8A%A4-Redis%EC%9D%98-%EA%B0%9C%EB%85%90-%ED%8A%B9%EC%A7%95

profile
이전의 기록들 👉 https://blog.naver.com/reviewerkyj

2개의 댓글

comment-user-thumbnail
2023년 3월 20일

단점에 대해서도 적어주시면 좋을듯 합니다.

아무리 최근에 dram이 싸다고 해도, 생각보다 비쌉니다 ㅠㅠ

인메모리의 특성상 스왑이 일어나게 되면 엄청난 성능 저하가 있는데, 저도 사실 풍족한 서버에서 무언가를 해본적이 없어서 redis를 제대로 써보지 못했네요...

AWS에서 제공하는 redis cache 서버도 있는 것으로 아는데, 사용기나 경험담도 적어주시면 더 좋은 글이 될 것 같습니다!!!!

1개의 답글