Redis란 뭘까??

https://velog.io/@dodozee/Redis

인 메모리 데이터 베이스 관리 시스템이다. 

  • key-value 구조를 가진다.
  • No sql이다. 
  • 메모리 기반의 데이터 저장소이다 (디스크 기반이 아니므로 빠르다.)
  • 인 메모리 구조지만 영속성을 지원한다.
  • 싱글 스레드 -> 순차적인 처리

 

 

 

Redis 언제 쓸까??

Redis는 빠른 읽기/쓰기 속도를 제공한다.

  • 캐싱 -> API응답이나 웹페이지를 캐싱한다.
  • 세션관리 -> 세션 스토리지로 사용
  • 메세지큐 -> Pub/Sub(발행-구독) 기능을 활용하여 이벤티 기반의 메시징 시스템 구축 가능
  • 분산락 
  • 실시간 데이터 처리 -> Leaderboard, 채팅 시스템
  • 지속적인 key value 저장소 
  • jwt 토큰 저장

 

 

 

Redis를 사용할 때 어떤걸 주의해야 할까? 

인 메모리 구조에서 오는 주의점들이 몇개 있다. 

  • 데이터 영속성 문제 ->메모리 데이터 저장소이므로, 서버가 다운되면 데이터가 유실될 수 있습니다. RDB, AOF를 적절히 설정해야함. 
  • 메모리 관리 -> 메모리가 부족할 수 있다. 

 

 

 

Redis의 구조는 어떨까?

인 메모리 데이터 구조란?

'컴퓨터 메모리' 내에서 데이터를 저장하고 조작하는 방식입니다. 이는 디스크에 데이터를 저장하고 검색하는 대신 'RAM과 같은 메모리에

데이터를 저장'하여 훨씬 빠른 속도로 데이터에 접근할 수 있게 해 줍니다.

이 구조는 대량의 데이터를 빠르게 처리해야 하는 애플리케이션에서 유용합니다. 단. 데이터 유실 방지하는 방안을 마련해야 한다.

 

key value 구조란?

위 사진을 보면 key value 형식에서 value에 연결될 수 있는 자료구조가 보일 것 이다. key는 문자열형태이다.

 

 

 

 

 

Redis Disk 저장 방식: RDB(Snapshot), AOF(Append On File), No Persistence, RED + AOP 

‘컴퓨터 메모리’ 내에서 데이터를 저장하고 조작하는 방식이기에 컴퓨터가 꺼지거나 재시작되면 데이터가 사라질 수 있습니다. 

그렇기에 데이터의 지속성을 위해 메모리에 저장된 데이터를 디스크에 저장하는 방식에 대해서 알아봅니다.

 

방식 설명 장점 단점
RDB(Redis Database) 설정한 시간 간격에 따라 데이터의 스냅샷을 일정한 시점에 디스크에 저장 빠른 백업 가능, 백업 파일 크기 작음 스냅샷 이후의 데이터 손실 가능, 데이터의 일관성이 중요한 애플리케이션에는 적합하지 않음
AOF(Append On File) 모든 write or update 연산을 로그 형태로 저장 데이터 복구 시점에서 최신의 데이터 상태 유지 가능 로그 파일 크기가 커질 수록 디스크 공간을 많이 차지, 디스크 I/O 부하 큼
No Persistence 디스크에 데이터를 저장하지 않음 디스크 공간을 절약함 서버가 다운되면 모든 데이터가 손실됨
RDB + AOF RDB와 AOF를 결합한 방식 RDB의 빠른 백업과 AOF의 데이터 일관성 장점을 모두 가짐 디스크 공간과 I/O 부하가 많이 필요함

 

RDB(Redis Database)

설정한 시간 간격에 따라 데이터 스냅샷을 일정한 시점에 디스크에 저장합니다. 이렇게 하면 빠른 백업이 가능하며 크기가

작아 백업 파일을 다른 서버로 이동하는 것이 용이합니다.

그러나 스냅샷을 수행한 이후 데이터 손실이 있을 수 있기 때문에, 데이터의 일관성이 중요한 애플리케이션에는 적합하지 않을 수 있습니다.  

https://server-talk.tistory.com/489

 

AOF(Append On File)

모든 write or update 연산을 로그 형태로 저장하는 방식입니다. 이 방식은 모든 데이터 변경 작업을 디스크에 기록하기 떄문에, 

데이터 복구 시점에서 최신의 데이터 상태를 유지할 수 있습니다. 

그러나 로그 파일 크기가 커질수록 디스크 공간을 많이 차지하게 되고, 또 많은 데이터 변경 작업을 기록하기 때문에 디스크 I/O부하가 

RDB방식 보다 크게 될 수 있습니다

https://server-talk.tistory.com/489

 

No Persistence

데이터 디스크에 저장하지 않는 방식입니다. 이 방식은 메모리에만 데이터를 저장힉 때문에 빠른 응답 시간을 제공할 수 있습니다. 

그러나 서버가 다운되면 데이터가 모두 손실됩니다. 따라서, 데이터의 지속성이 중요하지 않은 일시적인 캐시 등에 사용됩니다. 

 

RDB + AOF

RDB와 AOF의 장점을 결합한 방식입니다. 스냅샷 방식의 RDB와 로그 형태로 데이터를 저장하는 AOF를 동시에 사용함으로써, 

빠른 백업 및 데이터 복구 능력을 모두 갖출 수 있습니다. 

RDB는 정기적인 백업을 위해, AOF는 데이터 복구를 위해 사용됩니다. 이 방식은 데이터이 일관성과 복구 능력을 중요시하는 애플리케이션에 적합합니다. 

 

 

 

 

정리 

레디스에 대한 종합적인 정리를 볼 수 있어서 사진을 가져왔습니다.

다음으로 공부하길 추천하는건  고가용성 & 확장성 관련해서 복제(Replication), 보초(Sentinl), 클러스터(Cluster)입니다.

 

https://architecturenotes.co/redis/

 

참고

 

https://adjh54.tistory.com/447

 

[DB] Redis(Remote Dictionary Server) 이해하기 -1 : 구조 및 특징, 아키텍처

해당 글에서는 Redis의 이해를 돕기 위해 작성한 글이며 Redis의 구조, 특징, 아키텍처에 대해 알아봅니다 💡 [참고] Redis 관련해서 구성 내용에 대해 궁금하시면 아래의 글을 참고하시면 도움이 됩

adjh54.tistory.com

 

 

https://medium.com/garimoo/%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EB%A0%88%EB%94%94%EC%8A%A4-%ED%8A%9C%ED%86%A0%EB%A6%AC%EC%96%BC-01-92aaa24ca8cc

 

개발자를 위한 레디스 튜토리얼 01

Redis Tutorial for Developers

medium.com

https://sihyung92.oopy.io/database/redis/1

 

레디스Redis가 뭐에요? 레디스 설치하기, 레디스 튜토리얼

서문. 레디스가 뭔가요?

sihyung92.oopy.io

 

+ Recent posts