Redis Stream

Stream

  • Stream은 로그 데이터를 처리하게위해 5.0에서 새로 도입된 데이터 타입입니다.
  • 대량의 데이터가 연속적으로 발생할때 처리하기 위해 등장했습니다.
  • 기존 데이터를 수정하지 않고 오직 추가로 발생합니다.
  • 이런 종류의 데이터를 stream or log데이터라고 합니다.

XADD : 데이터 추가

XADD key ID field value [field2 value2...]

XADD sensor-1234 * temperature 98.7


  • ID=* : 명령의 결과를 ID로 리턴한다.

XLEN : 데이터 길이 조회

  • 정확히는 ID개수 조회
XLEN sensor-1234

XRANGE : 데이터 조회

XRANGE key start end [COUNT count]

XRANGE sensor-1234 - +
1) 1) 1538319053569-0
    2) 1) "temperature"
        2) "98.7"
2) 1) 1538319053569-1
    2) 1) "temperature"
        2) "98.8"


XRANGE key 1538319053569 1538319053569


  • start=-, end=+, count로 조회 개수 지정 가능
  • start, end에 특정 id지정 가능

XREAD : 데이터 읽어 오기

XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...]

XREAD count 1 STREAMS sensor-1234 1538322045065-0
1) 1) "sensor-1234"
    2) 1) 1) 1538322045065-1
        2) 1) "temperature"
            2) "98.8"
  • count : 읽어올 데이터 개수 지정, 지정하지않으면 모든 데이터를 읽어온다
  • ID : 지정한 ID의 다음 데이터를 읽어온다. 처음 데이터 읽으려면 0으로 지정
XREAD block 5000 STREAMS sensor-1234 $
  • Block : 새 데이터가 들어오기를 기다렸다가 들어오면 읽어온다. 이 때는 ID로 특별히 $를 사용한다.

XDEL, XTRIM : 데이터 삭제

  • XDEL ``` XDEL key ID

XDEL sensor-1234 1538322045065-0

<br>

- XTRIM

XTRIM key MAXLEN [~] count

XTRIM sensor-1234 maxlen 10 ```

  • sensor-1234에 데이터가 100개 있다면 오래된 순으로 90개를 지우고 최신 데이터 10개를 남긴다.
  • 특별 옵션, ~(about) : 대량의 데이터를 신속히 처리해야하는 스트림에서는 처리 지연이 발생하지 않도록 해야한다.
    • 따라서 짧은 시간에 처리할 수 있을 정도의 데이터를 삭제하는 기능이다.
    • 예) sensor-1234에 100만개의 데이터가 있다면 999,990개를 지우는데 시간이 걸린다. 이때는 데이터를 추가하거나 처리될수 없다. 이때 처리 지연이 발생할 수 있다.

Reference

  • http://redisgate.kr/redis/command/streams.php
  • https://redis.io/commands#stream

Tags:

Categories:

Updated: