인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

개발하는쿼카님의 프로필 이미지

작성한 질문수

실전! Redis 활용

Streams

Streams 삭제 관련 질문

해결된 질문

작성

·

46

0

안녕하세요! 동현님
강의 잘 듣구 있습니다~!!

 

Streams 자료구조를 설명할 때 append-only log consumer groups 과 같은 기능을 더한 자료구조라고 설명해주셨는데요.

append-only log 는 데이터를 오직 추가(append)만 할 수 있는 자료구조라고 추가로 설명해주셨습니다!

 

그런데 xdel 같은 명령어로 이벤트를 삭제할 수 있다고 설명해주셨는데요.

오직 추가만 할 수 있는 자료구조 라고 인식했는데, 갑자기 삭제 명령어가 있어서 헷갈립니다!

 

감사합니다.

답변 2

1

신동현님의 프로필 이미지
신동현
지식공유자

안녕하세요. 좋은 질문 감사드립니다!

Append-only log라고 하면 데이터의 불변성을 유지하는 자료구조를 말하는데요. 따라서 보통 데이터를 추가한 이후에 수정이나 삭제가 불가능합니다.

다만 Append-only log라고 할지라도 저장 공간의 한계로 인해 계속해서 모든 데이터를 보관하지 않고, 데이터를 압축하거나 불필요한 데이터를 삭제하는 식으로 저장 공간을 확보합니다. (특히나 Redis의 경우 메모리를 활용하기 때문에 저장 공간을 효율적으로 관리하는 것이 더 중요합니다.)

Redis Streams의 경우는 이미 추가된 데이터를 수정하거나 데이터를 중간에 삽입할 수 없기 때문에 Append-only log의 데이터 불변성 특성을 따르면서도, 실시간 데이터 관리와 저장 공간 효율성을 위한 유연한 삭제 기능을 추가적으로 제공한다고 볼 수 있습니다.

Append-only log라는 표현 때문에 헷갈리셨겠지만 Redis Streams는 Append-only log의 기본 개념을 확장한 유연한 데이터 구조 정도로 이해하시면 될 것 같습니다!

개발하는쿼카님의 프로필 이미지

상세하고 chill 한 설명 감사합니다!

image.png

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

개발하는쿼카님께서 질문해 주신 “Redis Streams에서의 삭제 기능”에 대해 답변드리겠습니다.

Redis Streams의 append-only log 속성

Redis Streams의 특징 중 하나는 데이터를 순차적으로 추가하는 append-only log 구조를 가진다는 점입니다. 이 말은 데이터가 처음에는 계속 추가되는 형태로 기록된다는 것을 나타냅니다. 그러나 이는 모든 데이터를 무조건적으로 보관하도록 강제하는 성격은 아닙니다.

XDEL 명령어와 그 의미

XDEL 명령어를 사용하여 특정 ID의 항목을 Streams에서 제거할 수는 있지만, 이 경우에도 몇 가지 고려사항이 있습니다. 주요한 것은 XDEL 명령어가 해당 데이터를 실제로 제거하기 보다는, 해당 데이터의 존재를 Streams에서 무시하도록 처리한다는 점입니다. 이는 실질적으로 시스템 메모리 사용을 줄이지 않고, 데이터를 조회하는 컨슈머들이 해당 메시지를 건너뛰도록 하기 위한 방식으로 이해할 수 있습니다.

자료구조적인 관점에서 append-only log는 기본적으로 데이터가 추가되고 나중에 수명이 다한 데이터가 삭제되는 흐름을 가질 수 있습니다. 이는 시스템 관리 유연성을 높이는 데 기여하며, 메모리 관리 및 오래된 데이터의 자동 삭제 등을 더불어 운용할 수 있습니다.

추가적으로 궁금하신 점이 있거나 명확한 답변이 필요하실 경우, 다음 Q&A 링크를 참고하실 수도 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.