inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[개념 & 이론] 대기업 근무하며 경험한 Redis를 야무지게 사용하기

비트맵 자료구조 관련 질문

해결된 질문

50

이찬미

작성한 질문수 3

1

비트맵 자료 구조 강의를 수강하고, 해당 자료구조가 활용되는 상황에 대해 이해하지 못한 부분이 있어 질문 드립니다.

  1. 강의에서 말씀하신 비트맵을 사용하지 않았을 때 유저마다 고유한 키 값으로 string set으로 저장한다는 의미가 무엇인가요? 유저의 고유 키마다 쿠폰에 대한 set이 있고, 어떤 쿠폰이 발급됐는지 저장하는 구조인가요?

  2. 강의에서의 상황은 유저가 해당 쿠폰을 발급 받았는지를 식별하기 위한 상황인가요? 해당 정보를 DB가 아닌 레디스에 저장할 이유가 무엇인가요? 아니면 둘 다 저장하는 방식인가요?
    만약 해당 쿠폰을 발급할 수 있는 기간이 일주일이면 일주일 동안 레디스에 해당 정보가 만료되지 않고 유지되어야 할까요?

  3. 해당 상황은 쿠폰 번호가 유저마다 다른가요, 다 같은 쿠폰 번호인가요? 만약 다른 쿠폰 번호라면 db에 따로 저장이 되어야 할까요?

감사합니다.

아키텍처 redis cache

답변 1

1

Hong

네 이찬민님 질문 감사합니다.

 

  1. String Set 방식의 의미

네 우선 틀린말은 아닙니다. 유저의 고유 키마다 쿠폰 Set이 존재 할 수 있고, 이를 통해서 어떤 쿠폰을 발급받았는지 저장하는 구조가 되거나, 아니면 하나의 서비스가 런칭되었을 떄 쿠폰을 포괄적으로 저장하고 그 값들을 Set으로 관리 할 수 있겠죠

 

둘다 가능합니다. 일단 기본적으로 유저의 고유 키마다 쿠폰 Set이 있다고 가정해 볼게요. 이 방식은 유저 수가 많아지면 당연하게도 각 유저마다 키가 생성되고 쿠폰 ID를 문자열로 저장하기 떄문에 메모리 사용량이 많아지는 구조가 될 겁니다. 근데 이걸 비트맵으로 기준을 잡을 수 있다면 쿠폰 기준으로 키를 만들고 유저 발급 여부를 1비트로 표현 할 수 있어서 메모리 관리 측면에서는 훨씬 효율이 좋은거죠

 

  1. Redis 사용 이유와 저장 방식

일단 관점은 일시적인 서비스라는 관점입니다. 당연하게도 영속성이 유지가 되어야한다면 DB에 넣는것이 안전할거에요. 하지만 일부 Latency를 위해서 Redis를 InMemory DB로 사용하는 케이스도 존재합니다.

현실적으로 실무에서는 Redis와 DB 둘 다 저장을 하게 될 겁니다. 일종의 Redis는 특정 이벤트 기간동안 중복 체크용으로 둘 수가 있고, DB는 영구적인 기록과 쿠폰 사용 이력을 관리 할 수 있겠죠

 

  1. 쿠폰 번호 관리

뭐 상황에 따라 다르겠지만 구현하는 방식에 따라 달라요. 유저마다 다른 고유 쿠폰 코드를 발급한다고 가정해볼게요. 같은 "5000원 할인 쿠폰"이지만, 유저마다 특정 고유 코드를 부여하는거죠.

이 과정에서 Redis 비트맵이 사용이된다면 쿠폰 타입 단위로 "이 타입의 쿠폰을 이미 받았는지"를 체크하는 용도로 사용이 될 수 있는거죠.

 

혹시 어느정도 이해가 되셨을까요?? 사실 구현 방식이 현실적으로 상황에 다르다보니깐.... 막 정의내리기 힘들기는 하지만 각각 상황에 따라서 어울리는 관점으로 구현하시면 되는거고 그 상황에서 선택 할 수 있는 선택지가 비트맵 or Set이라고 봐주시면 됩니다.

 

 

0

이찬미

네 설명해주신 내용을 바탕으로 어떤 상황에 적용할지 생각하는 과정에서 헷갈렸던 것 같은데 설명해주신 덕에 이해되었습니다.

답변 감사합니다!

라우팅 테이블 설정 중 궁금한게 있습니다.

0

27

1

user-service jwt

0

27

2

애그리거트 질문있습니다!

0

21

2

Redlock 알고리즘 관해 궁금한게 있습니다!

0

29

2

비동기 스레드풀 분리 이유와 Virtual Thread 전환 시 고려사항

0

26

1

좋아요/조회수 카운팅 병목현상에 대해서 궁금한점이 있습니다.

0

26

2

Agent Builder 서비스가 보이지 않아요

0

24

1

Build 관련 문제 (테스트 관련 문제)

0

30

1

consumer에서 에러가 발생할 경우 데이터 유실 문의

0

34

2

게시글 테스트 데이터 삽입

0

41

2

강의가 검은 화면으로 나옵니다.

0

42

1

mysql 의 bitmap

0

32

1

설명과 화면이 맞지 않습니다.

0

59

2

SSD가 메모리인가요?

0

70

2

레디스 활용에 대해서 질문드립니다!

0

77

2

sentinel이라는게 kafka의 주키퍼와 비슷한 개념인가요?

0

94

2

강의 내용 관련 이해가 잘 되지 않아 질문 남겨봅니다.

0

106

2

Cache-Aside 패턴에서 Cache Miss 시

0

84

2

동영상 질문

2

153

2

Redis의 클러스터 동작 방식 ( Hash Slot과 관련 )

0

290

4

Redis SSD

1

193

2

Redis Collection BitMaps

1

132

2

수업이랑 살짝 관계없는데 신경써주시면 좋을점입니다.

1

187

1

Redis란 무엇인가? 질문사항

0

436

2