xadd
XADD
레디스 개발자 교육 신청 |
레디스 정기점검/기술지원 Redis Technical Support |
레디스 엔터프라이즈 서버 Redis Enterprise Server |
---|
스트림에 데이터를 추가
사용법은 XADD key ID field value입니다.
ID는 이전에 입력된 ID보다 항상 큰 값이어야 합니다.
ID는 지정할 수도 있지만 일반적으로 '*'(asterisk)를 사용합니다. 그러면 항상 큰 값이 입력됩니다.
Example
명령> | XADD sensor-1234 * temperature 98.7 |
결과> | 1538319053569-0 |
ID는 두 개의 숫자로 구성되는데 <millisecondsTime>-<sequenceNumber> 앞은 millisecond 단위의 timestamp 숫자이고, 뒤 sequenceNumber는 8바이트 정수입니다. SequenceNumber는 같은 밀리 초 내에 또 데이터가 들어오면 중복을 방지하기 위해서 0, 1, 2, 3 와 같이 하나씩 증가합니다. 그러므로 동일한 밀리 초 내에 생성 될 수 있는 엔트리 수에는 실제적으로 제한이 없습니다. ID를 *로 입력하는 것은 레디스 인스턴스가 실행중인 서버 시간으로 ID를 생성하는 것입니다. |
장애조치(failover) 후 주의사항
마스터 A가 다운되어 클론 B가 마스터로 승격되었을 경우 B 노드의 timestamp가 A 노드 보다 적을 경우 데이터가 입력되지 않습니다. 그러므로 서버들의 시간을 동기화할 필요가 있습니다.
ID를 지정하는 경우
- 원 데이터에 ID로 사용할 값이 있을 경우에는 ID를 지정하는 것도 좋은 방법입니다. 예를 들어 센서가 밀리초로 데이터를 발생하고 레디스 서버는 1초에 한번 받을 경우 중복될 여지가 없습니다.
- ID 앞 부분을 생성하는 키를 사용할 수도 있습니다.
INCR sensor-1234-timestamp - XADD sensor-0001 0-1 temperature 101
ID에 0 또는 0-0은 입력할 수 없습니다. - XADD sensor-0001 1000 temperature 102
SequenceNumber를 생략할 수 있습니다.
옵션
- NOMKSTREAM
이 옵션은 새 키를 만들지 않습니다. 이미 있는 키에만 추가합니다. No Make Stream.
실수로 키를 잘못 만드는 것을 방지합니다.
버전 6.2에 추가되었습니다. - MAXLEN
입력하면서 스트림 최대 개수를 제한하고 싶을 경우 아래와 같이 MAXLEN 옵션을 사용합니다.
XADD sensor-1234 MAXLEN 10 * temperature 100
이 경우 삭제와 추가가 한 오퍼레이션으로 동작하므로 추가만 하는 경우보다 시간이 많이 걸리므로 주의해야 합니다. 이런 경우를 대비한 특별한 옵션이 있습니다.
XADD sensor-1234 MAXLEN ~ 10 * temperature 100
~ 옵션은 삭제할 수 있을 경우만 삭제합니다. - MINID
이 옵션을 사용하면 threshold에 ID를 입력합니다. 입력한 ID보다 작은(미만) 데이터를 삭제합니다.
버전 6.2에 추가되었습니다. - LIMIT
이 옵션은 삭제될 데이터 수를 제한합니다. 버전 6.2에 추가되었습니다.
명령문
XADD key [NOMKSTREAM] [MAXLEN|MINID [=|~] threshold [LIMIT count]] *|ID field value [field value ...]
- 이 명령은 version 5.0.0 부터 사용할 수 있다.
- 버전 6.2에 NOMKSTREAM, MINID, LIMIT 옵션이 추가되었습니다.
- 논리적 처리 소요시간은 O(log(N))이다. N은 스트림에 이미 저장된 엔트리(ID) 개수이다.
- ID를 리턴한다.
SQL Insert | Redis Enterprise 7.3.0 이상이면 INSERT를 사용해보세요. |
<< STREAMS Introduction | XADD | XADDS >> |
---|
Email
답글이 올라오면 이메일로 알려드리겠습니다.