코드조각 저장소

Managing a Redis Stream 본문

Programing/Redis

Managing a Redis Stream

basic 2020. 11. 3. 09:30

 

Redis 스트림은 최근 실시간 다중 프로세스 애플리케이션을 구축 할 때 제가 가장 좋아하는 Redis 기능이었습니다. 데이터 보존 기능은 Redis PUBSUB보다 강력하며 여러 소비자 및 소비자 그룹을 사용하면 대기열에 비해 사용하기가 더 쉽습니다.

Redis 스트림은 로그 데이터 구조로 작동합니다. 스트림에 더 많은 항목을 추가하면 메모리가 증가하고 일부 작업에 영향을 미칠 수 있습니다. 항목 수를 제한하려면 Redis에 제한된 항목 수로 스트림을 제한하도록 지시 할 수 있습니다.

XADD mystream MAXLEN ~ 1000 * <key> <value> [<key <value> ...]

Redis는 MAXLEN에 지정된 항목 수에 도달하면 가장 오래된 항목에서 스트림을 자릅니다. ~는 Redis에 사용자가 정확히 최대 용량을 1000으로 요청하지 않음을 알려줍니다. Redis가 항목 삭제를 시작하기 전에 스트림에 명령에 지정된 것보다 많은 항목이있을 수 있습니다.

Since trimming is an expensive operation, you can design your applications to delete messages after retrieved from the stream with XDEL . This might not be ideal if you have external logging services that also consume from the streams. Currently, Redis streams only support max size but there’s been a bit of discussion on a time-based

  EXPIRE 명령으로 스트림에 TTL을 추가 할 수 있습니다. 이것은 개별 항목이 아닌 전체 스트림에서 작동합니다. 키를 기반으로 여러 스트림을 생성하도록 애플리케이션을 설계 할 수 있지만 Kinesis 샤드를 생각해보십시오. 그런 다음 구성된 시간을 기준으로 각 스트림의 TTL을 설정합니다. MAXLEN을 EXPIRE 명령과 결합하여 각 스트림의 시간 기반 및 메모리 기반 관리를 모두 가질 수 있습니다

Comments