[Redis] Redis-Stream 이해하기

기훈·2024년 4월 22일

Redis

목록 보기
2/12

Redis-Stream

  • append-only log를 구현한 자료 구조

  • 하나의 key로 식별되는 하나의 stream에 엔트리가 계속 추가되는 구조

  • 하나의 엔트리는 entry ID + (key-value 리스트)로 구성

  • 추가된 데이터는 사용자가 삭제하지 않는 한 지워지지 않음


명령어 예시

  • XADD [key][id] [value]: 특정 key의 stram에 엔트리를 추가한다.
    ex) XADD user-name *(id) 저장된다 dustin hi tome hello

  • XRANGE [key][start] [end]: 특정 ID 범위의 엔트리를 반환한다.
    ex) XADD user-name - + (모든 범위 조회)

  • XREAD BLOCK [milliseconds] STREAMS [key][id]: 한 개 이상의 key에 대해 특정 ID 이후의 엔트리를 반환한다. (동기 수행 가능)
    ex) XREAD BLOCK 0 STREAMS user-name 0 (0보다 . 큰 ID 조회)

  • XREAD BLOCK [milliseconds] STREAMS [key] $: 앞으로 들어올 데이터를 동기방식으로 조회

Consumer Gropup

  • 한 stream을 여러 consumer가 분산 처리할 수 있는 방식

  • 하나의 그룹에 속한 consumer는 서로 다른 엔트리들을 조회하게 됨

  • XGROUP CREATE: consumer group을 생성
    ex) XGROUP CREATE user-name group1 (user-name에 group1이라는 consumer group을 생성)

  • XREADGROUP: 특정 key의 stream을 조회하되, 특정 consumer group에 속한 consumer로
    읽음
    ex) XREADGROUP GROUP group1 consumer1 COUNT 1 STREAMS user name (user-name에서 group1 그룹으로 1개의 컨슈머가 1개씩 조회)

0개의 댓글