겸쨔

[redis] 레디스란? 본문

db/redis

[redis] 레디스란?

겸쨔 2024. 7. 22. 10:07
반응형

안녕하세요.

레디스의 개념에 대해 적어보려 해요.

레디스 카테고리를 db에 넣을지 새로 팔지 고민을 좀 했는데요.

새로 파는게 맞는거 같더라구요.

 

먼저 저는 첫 회사에서 모든 프로젝트에 redis가 들어 갔었는데요.

db가 아니라 그냥 캐시만 사용했기 때문에 딱히 공부하지 않았었어요.

그래서 제가 전에 정리 했던거 그냥 복붙 할게요.

 

Redis란?

Redis: Remote Dictionary Server
풀네임에서 알 수 있듯이 기본적으로 Dictionary 구조 즉, 사전과 같은 구조로 되어 있다.

한 마디로 Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한
오픈 소스 기반의 NoSQL 비관계형 DBMS?다.

DB, Cache, 메시지브로커 및 스트리밍 엔진 등을 지원한다.

 

특징

특징으로는 단순히 Key, Value 구조이기 때문에 쿼리를 사용할 필요가 없다.

그리고 데이터를 저장하는 구조가 다른 DB처럼 디스크에 쓰는 구조가 아닌
인메모리 구조이기 때문에 데이터를 읽고 쓸 때의 속도가 월등히 빠르다.

 

인메모리란?

인메모리란 데이터를 디스크가 아니라 컴퓨터의 주기억장치인 RAM에 저장해두는 기법이다.
RAM에 저장하면, 데이터를 읽고 쓰는 동작을 메모리 내부에서 하기 때문에
디스크에서 읽고 쓰는 동작에 비해 속도가 최대 수백배 이상 빠르다고 한다.

그렇다고 해서 장점만 있는 것은 아니다.
인메모리 기법에는 치명적인 단점이 존재하는데,
바로 용량으로 인한 데이터의 유실이 발생할 수 있다는 점이다.

2019년에 쿠팡에서 오류가 발생한 적이 있었는데,
그 이유가 Redis의 용량 초과로 인한 서버 에러, RAM의 특성인 데이터 휘발 등 때문이다.

 

Redis를 사용하는 이유?

오키 데이터 저장하고 읽을 때 빠른거 알겠다.
캐시랑 메시지 브로커도 사용할 수 있는거 알겠다.

 

근데 왜 Redis?

Redis가 사랑 받는 이유는 여러가지가 있겠지만,
그 중에 하나 꼽자면 바로 Redis가 지원하는 자료구조에 있다.

 

아래는 Redis가 지원하는 자료구조다.

Strings, Bitmaps, Bit field, Hashes, Lists, Sets, Sorted Sets, Geospatial Indexes, Hyperloglogs, Streams

 

한 눈에 봐도 진짜 좀 다양한 자료구조를 지원한다.
살면서 저걸 다 쓸 일이 있을까 싶지만, 어쨌든 이건 Redis의 자랑이다.

추가적으로 다른 DBMS에서도 기본적으로 보장해주는 트랜잭션
그리고 Race Condition에 빠질 확률 자체가 없는 Single Thread.

 

이렇게 장점 투성인 Redis이지만,
위에서 언급한 치명적인 용량 단점으로 인해서 보통은 사용자의 인증 토큰이나

인증 번호 등 데이터 자체가 크진 않지만, 좋은 사용자 경험을 위한 곳에 사용된다.

반응형