
Redis Stream β Π½ΠΎΠ² Π°Π±ΡΡΡΠ°ΠΊΡΠ΅Π½ ΡΠΈΠΏ Π΄Π°Π½Π½ΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ Π² Redis Ρ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ΡΠΎ Π½Π° Π²Π΅ΡΡΠΈΡ 5.0
ΠΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»Π½ΠΎ, Redis Stream Π΅ ΡΠΏΠΈΡΡΠΊ, Π² ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ. ΠΡΡΠΊΠ° Π·Π°ΠΏΠΈΡ ΠΈΠΌΠ° ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡΡ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΈ Π²ΠΊΠ»ΡΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅Π²Π° ΠΏΠ΅ΡΠ°Ρ. ΠΠ°ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°ΡΠ²ΡΠ²Π°ΡΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ ΠΎΡ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΈΠ»ΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ Π½ΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ΅ ΠΏΠΎΡΡΡΠΏΠ²Π°Ρ Π² ΠΏΠΎΡΠΎΠΊΠ°, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° Unix ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βtail -fβ, ΠΊΠΎΡΡΠΎ ΠΏΡΠΎΡΠΈΡΠ° Π»ΠΎΠ³ ΡΠ°ΠΉΠ» ΠΈ ΡΠ°ΠΊΠ° Π½ΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΏΠΎΡΠΎΠΊΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ»ΡΡΠ°Π½ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΊΠ°ΠΊΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΠΈ βtail -fβ ΠΌΠΎΠ³Π°Ρ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° ΡΠ΅ΡΠ°Ρ ΡΠ°ΠΉΠ», Π±Π΅Π· Π΄Π° Π²Π»ΠΈΠ·Π°Ρ Π² ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ.
ΠΠ° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π° Π½Π° Π½ΠΎΠ²ΠΈΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΠΈ, Π½Π΅ΠΊΠ° Π±Π΅Π³Π»ΠΎ ΡΠΈ ΠΏΡΠΈΠΏΠΎΠΌΠ½ΠΈΠΌ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈ Redis, ΠΊΠΎΠΈΡΠΎ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΠΎΠ²ΡΠ°ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° Redis Stream.
Redis PUB/SUB
Redis Pub/Sub Π΅ ΠΏΡΠΎΡΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π²Π΅ΡΠ΅ Π²Π³ΡΠ°Π΄Π΅Π½Π° Π²ΡΠ² Π²Π°ΡΠ΅ΡΠΎ key-value Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π·Π° ΠΏΡΠΎΡΡΠΎΡΠ°ΡΠ° ΡΠ΅ ΠΏΠ»Π°ΡΠ°:
- ΠΠΊΠΎ ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΡΠΈΡΠΈΠ½Π° ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΠΈ, ΡΠΎΠΉ Π³ΡΠ±ΠΈ Π²ΡΠΈΡΠΊΠΈ ΡΠ²ΠΎΠΈ Π°Π±ΠΎΠ½Π°ΡΠΈ.
- ΠΠ° ΠΈΠ·Π΄Π°ΡΠ΅Π»Ρ ΠΌΡ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π·Π½Π°Π΅ ΡΠΎΡΠ½ΠΈΡ Π°Π΄ΡΠ΅Ρ Π½Π° Π²ΡΠΈΡΠΊΠΈΡΠ΅ ΡΠΈ Π°Π±ΠΎΠ½Π°ΡΠΈ.
- ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΡΠΎΠ²Π°ΡΠΈ Π°Π±ΠΎΠ½Π°ΡΠΈΡΠ΅ ΡΠΈ, Π°ΠΊΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ.
- Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π° ΠΎΡ Π±ΡΡΠ΅ΡΠ° Π½Π° ΠΈΠ·Π΄Π°ΡΠ΅Π»Ρ Π²Π΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ΡΠΎ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ²Π° ΠΊΠΎΠ»ΠΊΠΎ Π°Π±ΠΎΠ½Π°ΡΠΈ ΡΠ° Π³ΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΈ ΠΊΠΎΠ»ΠΊΠΎ Π±ΡΡΠ·ΠΎ ΡΠ° ΡΡΠΏΠ΅Π»ΠΈ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΡ ΡΠΎΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
- ΠΡΠΈΡΠΊΠΈ Π°Π±ΠΎΠ½Π°ΡΠΈ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. ΠΠ±ΠΎΠ½Π°ΡΠΈΡΠ΅ ΡΠ°ΠΌΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΡΠ³Π»Π°ΡΡΡ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΡΠ΅Π΄Π° Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΅Π΄Π½ΠΎ ΠΈ ΡΡΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
- ΠΡΠΌΠ° Π²Π³ΡΠ°Π΄Π΅Π½ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π° ΡΡΠΏΠ΅ΡΠ½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Π°Π±ΠΎΠ½Π°ΡΠ°. ΠΠΊΠΎ Π°Π±ΠΎΠ½Π°ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ΅ ΡΡΠΈΠ½Π΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°, ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡ Π½Π΅ ΡΠ΅ ΡΠ·Π½Π°Π΅ Π·Π° ΡΠΎΠ²Π°.
Redis List
Redis List Π΅ ΡΡΡΡΠΊΡΡΡΠ° ΠΎΡ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΈ ΠΏΡΠΎΡΠΈΡΠ°ΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ Π½Π°ΡΠ°Π»ΠΎΡΠΎ ΠΈΠ»ΠΈ ΠΊΡΠ°Ρ Π½Π° ΡΠΏΠΈΡΡΠΊΠ°. ΠΠ° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΠ°Π·ΠΈ ΡΡΡΡΠΊΡΡΡΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π΄ΠΎΠ±ΡΡ ΡΡΠ΅ΠΊ ΠΈΠ»ΠΈ ΠΎΠΏΠ°ΡΠΊΠ° Π·Π° Π²Π°ΡΠ°ΡΠ° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΡΠΎΠ²Π° Π² ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ»ΡΡΠ°ΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ. ΠΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΠΈ ΠΎΡ Redis Pub/Sub:
- Π‘ΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ Π΄ΠΎΡΡΠ°Π²Ρ Π½Π° Π΅Π΄ΠΈΠ½ ΠΊΠ»ΠΈΠ΅Π½Ρ. ΠΡΡΠ²ΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠ°Π½ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΏΡΡΠ².
- ΠΠ»ΠΈΠ½Ρ ΡΡΡΠ±Π²Π° ΡΠ°ΠΌ Π΄Π° ΠΈΠ½ΠΈΡΠΈΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° Π²ΡΡΠΊΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. List Π½Π΅ Π·Π½Π°Π΅ Π½ΠΈΡΠΎ Π·Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅.
- Π‘ΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ, Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ Π±ΡΠ΄Π°Ρ ΠΏΡΠΎΡΠ΅ΡΠ΅Π½ΠΈ ΠΈΠ»ΠΈ ΡΠ²Π½ΠΎ ΠΈΠ·ΡΡΠΈΡΠΈ. ΠΠΊΠΎ ΡΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΠ»ΠΈ Redis ΡΡΡΠ²ΡΡ Π΄Π° Π·Π°ΠΏΠΈΡΠ²Π° Π΄Π°Π½Π½ΠΈ Π½Π° Π΄ΠΈΡΠΊ, Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΡΠ°ΡΡΠ²Π°.
ΠΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Stream
ΠΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π·Π°ΠΏΠΈΡΠ° Π² ΠΏΠΎΡΠΎΠΊΠ°
ΠΠΊΠΈΠΏ XADD Π΄ΠΎΠ±Π°Π²Ρ Π½ΠΎΠ² Π·Π°ΠΏΠΈΡ Π² ΠΏΠΎΡΠΎΠΊΠ°. ΠΠ°ΠΏΠΈΡΡΡ Π½Π΅ Π΅ ΠΏΡΠΎΡΡΠΎ Π½ΠΈΠ·, ΡΠΎΠΉ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π΅Π΄Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠ»ΡΡ-ΡΡΠΎΠΉΠ½ΠΎΡΡ Π΄Π²ΠΎΠΉΠΊΠΈ. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ Π²ΡΠ΅ΠΊΠΈ Π·Π°ΠΏΠΈΡ Π²Π΅ΡΠ΅ Π΅ ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½ ΠΈ Π½Π°ΠΏΠΎΠΌΠ½Ρ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° CSV ΡΠ°ΠΉΠ».
> XADD mystream * sensor-id 1234 temperature 19.8
1518951480106-0
Π ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ Π² ΠΏΠΎΡΠΎΠΊΠ° Ρ ΠΈΠΌΠ΅ΡΠΎ (ΠΊΠ»ΡΡΠ°) Β«mystreamΒ» Π΄Π²Π΅ ΠΏΠΎΠ»Π΅ΡΠ°: Β«sensor-idΒ» ΠΈ Β«temperatureΒ» Ρ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Β«1234Β» ΠΈ Β«19.8Β» ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ. ΠΠ°ΡΠΎ Π²ΡΠΎΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΠΏΡΠΈΠ΅ΠΌΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ Π½Π° Π·Π°ΠΏΠΈΡΠ° β ΡΠΎΠ·ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ° Π²ΡΠ΅ΠΊΠΈ Π·Π°ΠΏΠΈΡ Π² ΠΏΠΎΡΠΎΠΊΠ°. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΏΡΠ΅Π΄Π°Π΄ΠΎΡ ΠΌΠ΅ *, Π·Π°ΡΠΎΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Redis Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° Π½ΠΎΠ² ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π·Π° Π½Π°Ρ. ΠΡΠ΅ΠΊΠΈ Π½ΠΎΠ² ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π²ΡΠ΅ΠΊΠΈ Π½ΠΎΠ² Π·Π°ΠΏΠΈΡ ΡΠ΅ ΠΈΠΌΠ° ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ.
Π€ΠΎΡΠΌΠ°Ρ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°
ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡΡ Π½Π° Π·Π°ΠΏΠΈΡΠ°, Π²ΡΡΠ½Π°Ρ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XADD, ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π΄Π²Π΅ ΡΠ°ΡΡΠΈ:
{millisecondsTime}-{sequenceNumber}
millisecondsTime β Unix Π²ΡΠ΅ΠΌΠ΅ Π² ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ (Π²ΡΠ΅ΠΌΠ΅ ΡΡΡΠ²ΡΡ Redis). ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π°ΠΊΠΎ ΡΠ΅ΠΊΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΅ ΡΠ°Π²Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ Π·Π°ΠΏΠΈΡ, ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²ΡΠ΅ΠΌΠ΅Π²Π°ΡΠ° ΠΌΠ΅ΡΠΊΠ° Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ Π·Π°ΠΏΠΈΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π°ΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΡΡΠ²ΡΡΠ° ΠΏΠΎΡΡΠ½Π΅ Π½Π°Π·Π°Π΄, Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠ΅ Π·Π°ΠΏΠ°Π·ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π½Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅.
sequenceNumber ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π·Π°ΠΏΠΈΡΠΈ, ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π² Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°. sequenceNumber ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ Ρ 1 ΡΠΏΡΡΠΌΠΎ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ Π·Π°ΠΏΠΈΡ. Π’ΡΠΉ ΠΊΠ°ΡΠΎ sequenceNumber ΠΈΠΌΠ° ΡΠ°Π·ΠΌΠ΅Ρ 64 Π±ΠΈΡΠ°, Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π½Π΅ Π±ΠΈ ΡΡΡΠ±Π²Π°Π»ΠΎ Π΄Π° ΡΡΠ΅ΡΠ½Π΅ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° Π±ΡΠΎΡ Π·Π°ΠΏΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΏΡΠ΅Π· Π΅Π΄Π½Π° ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°.
Π€ΠΎΡΠΌΠ°ΡΡΡ Π½Π° ΡΠ΅Π·ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π½Π° ΠΏΡΡΠ² ΠΏΠΎΠ³Π»Π΅Π΄ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΡΡΠ°Π½Π½ΠΎ. ΠΠ΅Π΄ΠΎΠ²Π΅ΡΡΠΈΠ²ΠΈΡΡ ΡΠΈΡΠ°ΡΠ΅Π» ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΈΡΠ° Π·Π°ΡΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π΅ ΡΠ°ΡΡ ΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°. ΠΡΠΈΡΠΈΠ½Π°ΡΠ° Π΅, ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ²Π΅ΡΠ΅ Redis ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ ΠΏΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ. Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡΡ Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π·Π°ΠΏΠΈΡΠ°, ΡΠΎΠ²Π° Π΄Π°Π²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ Π½Π° Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ. Π©Π΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ ΠΊΡΠΌ ΠΈΠ·ΡΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XRANGE.
ΠΠΊΠΎ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΡΠΈΡΠΈΠ½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΠΎΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΠΉΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ Π½ΡΠΊΠ°ΠΊΠ²Π° Π²ΡΠ½ΡΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΎ ΠΏΡΠ΅Π΄Π°Π΄Π΅ΠΌ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XADD Π²ΠΌΠ΅ΡΡΠΎ Π·Π½Π°ΠΊΠ° * ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρ:
> XADD somestream 0-1 field value
0-1
> XADD somestream 0-2 foo bar
0-2
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΡΡΡΠ±Π²Π° ΡΠ°ΠΌΠΈ Π΄Π° ΡΠ»Π΅Π΄ΠΈΡΠ΅ Π·Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°. Π Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΅ "0-1", ΡΠ°ΠΊΠ° ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π½ΡΠΌΠ° Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ΅ Π΄ΡΡΠ³ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΠΉΡΠΎ Π΅ ΡΠ°Π²Π΅Π½ ΠΈΠ»ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΡΠΊ ΠΎΡ "0-1".
> XADD somestream 0-1 foo bar
(error) ERR ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡΡ, ΠΏΠΎΡΠΎΡΠ΅Π½ Π² XADD, Π΅ ΡΠ°Π²Π΅Π½ ΠΈΠ»ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΡΠΊ ΠΎΡ ΡΠ΅Π»Π΅Π²ΠΈΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ Π½Π° ΠΏΠΎΡΠΎΠΊΠ°
ΠΡΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΏΠΎΡΠΎΠΊΠ°
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π±ΡΠΎΡ Π½Π° Π·Π°ΠΏΠΈΡΠΈΡΠ΅ Π² ΠΏΠΎΡΠΎΠΊΠ°, ΠΏΡΠΎΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XLEN. ΠΠ° Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:
> XLEN somestream
(integer) 2
ΠΠ°ΡΠ²ΠΊΠΈ ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ β XRANGE ΠΈ XREVRANGE
ΠΠ° Π΄Π° Π·Π°ΠΏΠΈΡΠ°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΠΎΡΠΈΠΌ Π΄Π²Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° β Π½Π°ΡΠ°Π»ΠΎΡΠΎ ΠΈ ΠΊΡΠ°Ρ Π½Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°. ΠΡΡΠ½Π°ΡΠΈΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π° Π²ΡΠΈΡΠΊΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΡΡΡΠΎ Π΄Π²Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° "-" ΠΈ "+", ΠΊΠΎΠΈΡΠΎ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π°Ρ Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΈΡ (ΠΏΡΡΠ²Π° Π·Π°ΠΏΠΈΡ) ΠΈ Π½Π°ΠΉ-Π³ΠΎΠ»Π΅ΠΌΠΈΡ (ΠΏΠΎΡΠ»Π΅Π΄Π½Π° Π·Π°ΠΏΠΈΡ) ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π² ΠΏΠΎΡΠΎΠΊΠ°. ΠΡΠΈΠΌΠ΅ΡΡΡ ΠΏΠΎ-Π΄ΠΎΠ»Ρ ΡΠ΅ ΠΈΠ·Π²Π΅Π΄Π΅ Π²ΡΠΈΡΠΊΠΈ Π·Π°ΠΏΠΈΡΠΈ Π½Π° ΠΏΠΎΡΠΎΠΊΠ°.
> XRANGE mystream - +
1) 1) 1518951480106-0
2) 1) "sensor-id"
2) "1234"
3) "temperature"
4) "19.8"
2) 1) 1518951482479-0
2) 1) "sensor-id"
2) "9999"
3) "temperature"
4) "18.2"
ΠΡΡΠΊΠ° Π²ΡΡΡΠ΅Π½Π° Π·Π°ΠΏΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΌΠ°ΡΠΈΠ² ΠΎΡ Π΄Π²Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ°: ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈ ΡΠΏΠΈΡΡΠΊ ΠΎΡ ΠΊΠ»ΡΡ-ΡΡΠΎΠΉΠ½ΠΎΡΡ. ΠΠ΅ΡΠ΅ ΠΊΠ°Π·Π°Ρ ΠΌΠ΅, ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈΡΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΠΈΡΠ΅ ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°ΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π». ΠΠΎΠΆΠ΅ΠΌ ΠΎΠ±Π°ΡΠ΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΠΌ Π² Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π΅ΠΏΡΠ»Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, Π° ΡΠ°ΠΌΠΎ Unix Π²ΡΠ΅ΠΌΠ΅, ΠΏΡΠΎΠΏΡΡΠΊΠ°ΠΉΠΊΠΈ ΡΠ°ΡΡΡΠ°, ΡΠ²ΡΡΠ·Π°Π½Π° Ρ sequenceNumberΠΡΠΎΠΏΡΡΠ½Π°ΡΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΈΡΠ°Π²Π½Π΅Π½Π° Π½Π° Π½ΡΠ»Π° Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΈ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π°ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π² ΠΊΡΠ°Ρ Π½Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°. ΠΠΎ-Π΄ΠΎΠ»Ρ Π΅ Π΄Π°Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° ΠΏΠΎΠΈΡΠΊΠ°ΡΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, ΡΠ°Π²Π΅Π½ Π½Π° Π΄Π²Π΅ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ.
> XRANGE mystream 1518951480106 1518951480107
1) 1) 1518951480106-0
2) 1) "sensor-id"
2) "1234"
3) "temperature"
4) "19.8"
ΠΠΌΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π° Π·Π°ΠΏΠΈΡ Π² ΡΠΎΠ·ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, Π½ΠΎ Π² ΡΠ΅Π°Π»Π½ΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ Π²ΡΡΠ½Π°ΡΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΎΠ³ΡΠΎΠΌΠ΅Π½. ΠΠΎΡΠ°Π΄ΠΈ ΡΠ°Π·ΠΈ ΠΏΡΠΈΡΠΈΠ½Π° XRANGE ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΠΏΡΠΈΡΡΠ° COUNT. ΠΠΎΡΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΏΡΡΠ²ΠΈΡΠ΅ N Π·Π°ΠΏΠΈΡΠ°. ΠΠΊΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ N Π·Π°ΠΏΠΈΡΠ° (ΠΏΠ°Π³ΠΈΠ½Π°ΡΠΈΡ), ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, Π΄Π° ΡΠ²Π΅Π»ΠΈΡΠΈΠΌ Π½Π΅Π³ΠΎ sequenceNumber Ρ Π΅Π΄Π½ΠΎ ΠΈ Π΄Π° ΠΏΠΎΠ²ΡΠΎΡΠΈΠΌ Π·Π°ΡΠ²ΠΊΠ°ΡΠ°. ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠΎΠ²Π° Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠ°ΠΏΠΎΡΠ²Π°ΠΌΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΡΠΌΠ΅ 10 Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° XADD (Π΄Π° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΠ΅ ΠΏΠΎΡΠΎΠΊΡΡ mystream Π²Π΅ΡΠ΅ Π΅ Π·Π°ΠΏΡΠ»Π½Π΅Π½ Ρ 10 Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ°). ΠΠ° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ, ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΉΠΊΠΈ ΠΏΠΎ 2 Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π·Π°ΠΏΠΎΡΠ²Π°ΠΌΠ΅ Ρ ΠΏΡΠ»Π½ΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, Π½ΠΎ Ρ COUNT ΡΠ°Π²Π΅Π½ Π½Π° 2.
> XRANGE mystream - + COUNT 2
1) 1) 1519073278252-0
2) 1) "foo"
2) "value_1"
2) 1) 1519073279157-0
2) 1) "foo"
2) "value_2"
ΠΠ° Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ ΠΈΡΠ΅ΡΠ°ΡΠΈΡΡΠ° Ρ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ Π΄Π²Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ 1519073279157-0, ΠΈ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ 1 ΠΊΡΠΌ sequenceNumber.
Π Π΅Π·ΡΠ»ΡΠ°ΡΠ½ΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ 1519073279157-1, ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΡΠΎ Π½ΠΎΠ² Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π·Π° Π½Π°ΡΠ°Π»ΠΎ Π½Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π·Π° ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ XRANGE:
> XRANGE mystream 1519073279157-1 + COUNT 2
1) 1) 1519073280281-0
2) 1) "foo"
2) "value_3"
2) 1) 1519073281432-0
2) 1) "foo"
2) "value_4"
Π ΡΠ°ΠΊΠ° Π½Π°ΡΠ°ΡΡΠΊ. Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠ° XRANGE Π΅ O(log (N)) Π·Π° ΡΡΡΡΠ΅Π½Π΅, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° O(M) Π·Π° Π²ΡΡΡΠ°Π½Π΅ Π½Π° M Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ, Π²ΡΡΠΊΠ° ΡΡΡΠΏΠΊΠ° Π½Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΡΡΠ° Π΅ Π±ΡΡΠ·Π°. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½, Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° XRANGE ΠΌΠΎΠΆΠ΅ΠΌ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π΄Π° ΠΈΡΠ΅ΡΠ°ΡΠ°ΠΌΠ΅ ΠΏΠΎΡΠΎΡΠΈΡΠ΅.
ΠΠΊΠΈΠΏ XREVRANGE Π΅ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ Π½Π° XRANGE, Π½ΠΎ Π²ΡΡΡΠ° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ Π² ΠΎΠ±ΡΠ°ΡΠ΅Π½ ΡΠ΅Π΄:
> XREVRANGE mystream + - COUNT 1
1) 1) 1519073287312-0
2) 1) "foo"
2) "value_10"
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XREVRANGE ΠΏΡΠΈΠ΅ΠΌΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° start ΠΈ stop Π² ΠΎΠ±ΡΠ°ΡΠ΅Π½ ΡΠ΅Π΄.
Π§Π΅ΡΠ΅Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ Π·Π°ΠΏΠΈΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° XREAD
Π§Π΅ΡΡΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ²Π° Π·Π°Π΄Π°ΡΠ° Π΄Π° ΡΠ΅ Π°Π±ΠΎΠ½ΠΈΡΠ°ΠΌΠ΅ Π·Π° ΠΏΠΎΡΠΎΠΊ ΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π½ΠΎΠ²ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ. Π’Π°Π·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° Redis Pub/Sub ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡΠ°Ρ Redis List, Π½ΠΎ ΠΈΠΌΠ° ΠΏΡΠΈΠ½ΡΠΈΠΏΠ½ΠΈ ΡΠ°Π·Π»ΠΈΠΊΠΈ Π² Π½Π°ΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Redis Stream:
- ΠΡΡΠΊΠΎ Π½ΠΎΠ²ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ΅ Π΄ΠΎΡΡΠ°Π²Ρ Π΄ΠΎ Π²ΡΠ΅ΠΊΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊ. Π’ΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π° ΠΎΡ Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠΈΡ Redis List, ΠΊΡΠ΄Π΅ΡΠΎ Π½ΠΎΠ²ΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΎΡΠ΅ΡΠ΅Π½ΠΎ ΡΠ°ΠΌΠΎ ΠΎΡ Π΅Π΄ΠΈΠ½ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊ.
- ΠΠΎΠΊΠ°ΡΠΎ Π² Redis Pub/Sub Π²ΡΠΈΡΠΊΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ΅ Π·Π°Π±ΡΠ°Π²ΡΡ ΠΈ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ ΡΠ΅ Π·Π°ΠΏΠ°Π·Π²Π°Ρ, Π² Stream Π²ΡΠΈΡΠΊΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π·Π° Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΡΠΎΠΊ (ΠΎΡΠ²Π΅Π½ Π°ΠΊΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ Π½Π΅ ΠΈΠ·Π²ΠΈΠΊΠ° Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ΡΠΎ ΠΈΠΌ).
- Redis Stream ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΠ°Π·Π³ΡΠ°Π½ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° Π² Π΅Π΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ. ΠΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΈΠΆΠ΄Π° ΡΠ°ΠΌΠΎ ΡΠ²ΠΎΡΡΠ° Π»ΠΈΡΠ½Π° ΠΈΡΡΠΎΡΠΈΡ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ°.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π°Π±ΠΎΠ½ΠΈΡΠ°ΡΠ΅ Π·Π° ΠΏΠΎΡΠΎΠΊΠ° ΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ Π½ΠΎΠ²ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XREAD. Π’ΠΎΠ²Π° Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΎΡ XRANGE, Π·Π°ΡΠΎΠ²Π° ΠΏΡΡΠ²ΠΎ ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Ρ ΠΏΠΎ-ΠΏΡΠΎΡΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ.
> XREAD COUNT 2 STREAMS mystream 0
1) 1) "mystream"
2) 1) 1) 1519073278252-0
2) 1) "foo"
2) "value_1"
2) 1) 1519073279157-0
2) 1) "foo"
2) "value_2"
Π ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅ Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½Π° Π½Π΅Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ° ΡΠΎΡΠΌΠ° XREAD. ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΎΠΏΡΠΈΡΡΠ° COUNT Π½Π΅ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½Π°. ΠΡΡΡΠ½ΠΎΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½Π° ΠΎΠΏΡΠΈΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π΅ ΠΎΠΏΡΠΈΡΡΠ° STREAMS, ΠΊΠΎΡΡΠΎ Π·Π°Π΄Π°Π²Π° ΡΠΏΠΈΡΡΠΊ Ρ ΠΏΠΎΡΠΎΡΠΈ Π·Π°Π΅Π΄Π½ΠΎ Ρ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ. ΠΠ°ΠΏΠΈΡΠ°Ρ ΠΌΠ΅ "STREAMS mystream 0" β ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ Π²ΡΠΈΡΠΊΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΎΡ ΠΏΠΎΡΠΎΠΊΠ° mystream Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌ ΠΎΡ "0-0". ΠΠ°ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ ΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π²ΡΡΡΠ° ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΠΎΡΠΎΠΊΠ°, Π·Π°ΡΠΎΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅ Π°Π±ΠΎΠ½ΠΈΡΠ°ΠΌΠ΅ Π·Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. ΠΠΎΠΆΠ΅Ρ ΠΌΠ΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, "STREAMS mystream otherstream 0 0". ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΡΠ»Π΅Π΄ ΠΎΠΏΡΠΈΡΡΠ° STREAMS ΡΡΡΠ±Π²Π° ΠΏΡΡΠ²ΠΎ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠΌ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° Π²ΡΠΈΡΠΊΠΈ Π½ΡΠΆΠ½ΠΈ ΠΏΠΎΡΠΎΡΠΈ, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠΏΠΈΡΡΠΊ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ.
Π ΡΠ°Π·ΠΈ ΠΏΡΠΎΡΡΠ° ΡΠΎΡΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π½Π΅ ΠΏΡΠ°Π²ΠΈ Π½ΠΈΡΠΎ ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ XRANGE. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°ΠΌΠ΅ XREAD Π² Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π·Π°Π΄Π°Π²Π°ΠΉΠΊΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° BLOCK:
> XREAD BLOCK 0 STREAMS mystream $
Π ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅ Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½Π° Π½ΠΎΠ²Π°ΡΠ° ΠΎΠΏΡΠΈΡ BLOCK Ρ Π²ΡΠ΅ΠΌΠ΅Π²ΠΎ ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅ 0 ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ (Ρ.Π΅. ΠΎΠ·Π½Π°ΡΠ°Π²Π° Π±Π΅Π·ΠΊΡΠ°ΠΉΠ½ΠΎ ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅). ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° ΠΏΡΠ΅Π΄Π°Π΄Π΅ΠΌ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π·Π° ΠΏΠΎΡΠΎΠΊΠ° mystream, Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ $. Π’ΠΎΠ·ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ XREAD Ρ ΟΟΞΟΡι Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π² ΠΏΠΎΡΠΎΠΊΠ° mystream. Π’Π°ΠΊΠ° ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ°ΠΌΠΎ Π½ΠΎΠ²ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΠ³Π°ΡΠΎ Π·Π°ΠΏΠΎΡΠ½Π°Ρ
ΠΌΠ΅ Π΄Π° ΡΠ»ΡΡΠ°ΠΌΠ΅. Π ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΡΠΌΠΈΡΡΠ» ΡΠΎΠ²Π° Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° Unix ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«tail -fΒ».
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΡΠΈΡΡΠ° BLOCK Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ $. ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π²ΡΠ΅ΠΊΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π² ΠΏΠΎΡΠΎΠΊΠ°. ΠΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±ΡΠ»ΡΠΆΠΈ Π½Π°ΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ, Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅, ΡΡ ΡΠ΅ Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈ, Π² ΠΏΡΠΎΡΠΈΠ²Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ Π±ΡΠ΄Π΅ Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π°.
ΠΠ»ΠΎΠΊΠΈΡΠ°Ρ XREAD ΠΌΠΎΠΆΠ΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΡΠ»Π΅Π΄ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π²Π΅Π΄Π½Π°Π³Π°, ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠΊΠ°ΠΆΠ΅ΡΠ΅ ΠΈΠΌΠ΅Π½Π°ΡΠ° ΠΈΠΌ. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΡΠ΅ Π²ΡΡΠ½Π΅ Π·Π°ΠΏΠΈΡΠ° Π½Π° ΠΏΡΡΠ²ΠΈΡ ΠΏΠΎΡΠΎΠΊ, Π² ΠΊΠΎΠΉΡΠΎ ΡΠ° ΠΏΠΎΡΡΡΠΏΠΈΠ»ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΡΡΠ²ΠΈΡΡ Π°Π±ΠΎΠ½Π°Ρ, Π±Π»ΠΎΠΊΠΈΡΠ°Π½ Π·Π° ΡΠΎΠ·ΠΈ ΠΏΠΎΡΠΎΠΊ, ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΏΡΡΠ².
ΠΡΡΠΏΠΈ Π°Π±ΠΎΠ½Π°ΡΠΈ
ΠΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠΌ Π΄ΠΎΡΡΡΠΏΠ° Π½Π° Π°Π±ΠΎΠ½Π°ΡΠΈΡΠ΅ Π΄ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° Π² Π΅Π΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ. ΠΠ΄ΠΈΠ½ ΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π΅ ΠΎΠΏΠ°ΡΠΊΠ° ΠΎΡ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ ΠΏΠΎΡΠΎΠΊΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΠΉΠΊΠΈ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ.
ΠΠΊΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ ΡΡΠΈ Π°Π±ΠΎΠ½Π°ΡΠ° C1, C2, C3 ΠΈ ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΠΉΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ 1, 2, 3, 4, 5, 6, 7, ΡΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ:
1 -> C1
2 -> C2
3 -> C3
4 -> C1
5 -> C2
6 -> C3
7 -> C1
ΠΠ° Π΄Π° ΠΏΠΎΡΡΠΈΠ³Π½Π΅ ΡΠΎΠ·ΠΈ Π΅ΡΠ΅ΠΊΡ, Redis Stream ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, Π½Π°ΡΠ΅ΡΠ΅Π½Π° ΠΡΡΠΏΠ° Π°Π±ΠΎΠ½Π°ΡΠΈ. Π’Π°Π·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎ-Π°Π±ΠΎΠ½Π°Ρ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΏΠΎΡΠΎΠΊΠ°, Π½ΠΎ Π²ΡΡΡΠ½ΠΎΡΡ ΡΠ΅ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π° ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π°Π±ΠΎΠ½Π°ΡΠ° Π² Π³ΡΡΠΏΠ°ΡΠ°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΉΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΠΈ:
- ΠΡΡΠΊΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ Π΄ΠΎΡΡΠ°Π²Ρ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π°Π±ΠΎΠ½Π°ΡΠΈ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π³ΡΡΠΏΠ°ΡΠ°.
- Π ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π³ΡΡΠΏΠ°ΡΠ° Π°Π±ΠΎΠ½Π°ΡΠΈΡΠ΅ ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Ρ ΠΏΠΎ ΠΈΠΌΠ΅, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π½ΠΈΠ· Ρ ΠΎΠ³Π»Π΅Π΄ Π½Π° ΡΠ΅Π³ΠΈΡΡΡΡΠ°. ΠΠΊΠΎ Π½ΡΠΊΠΎΠΉ Π°Π±ΠΎΠ½Π°Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·Π»Π΅Π·Π΅ ΠΎΡ Π³ΡΡΠΏΠ°ΡΠ°, ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΠΈ Π² Π³ΡΡΠΏΠ°ΡΠ° Ρ ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΎΡΠΎ ΡΠΈ ΠΈΠΌΠ΅.
- ΠΡΡΠΊΠ° ΠΡΡΠΏΠ° Π°Π±ΠΎΠ½Π°ΡΠΈ ΡΠ»Π΅Π΄Π²Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° 'ΠΏΡΡΠ²ΠΎ Π½Π΅ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅'. ΠΠΎΠ³Π°ΡΠΎ Π°Π±ΠΎΠ½Π°ΡΡΡ ΠΈΡΠΊΠ° Π½ΠΎΠ²ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈ ΡΠ°ΠΌΠΎ ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ ΡΠ° Π±ΠΈΠ»ΠΈ Π΄ΠΎΡΡΠ°Π²ΡΠ½ΠΈ Π½Π° Π΄ΡΡΠ³ Π°Π±ΠΎΠ½Π°Ρ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π³ΡΡΠΏΠ°ΡΠ°.
- Π‘ΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° ΡΠ²Π½ΠΎ ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠΏΠ΅ΡΠ½Π°ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Π°Π±ΠΎΠ½Π°ΡΠ°. ΠΠΎΠΊΠ°ΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅ ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΏΠΎΠΈΡΠΊΠ°Π½ΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΠΎΡΡΠ°Π½Π΅ Π² ΡΡΠ°ΡΡΡ 'ΠΎΡΠ°ΠΊΠ²Π°Π½Π΅'.
- ΠΡΡΠΊΠ° Π³ΡΡΠΏΠ° Π°Π±ΠΎΠ½Π°ΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Π²ΡΠ΅ΠΊΠΈ Π°Π±ΠΎΠ½Π°Ρ Π΄Π° ΠΈΡΠΊΠ° ΠΈΡΡΠΎΡΠΈΡ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π±ΠΈΠ»ΠΈ Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½Π΅Π³ΠΎ, Π½ΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ° Π±ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ (Π² ΡΡΠ°ΡΡΡ 'ΠΎΡΠ°ΠΊΠ²Π°Π½Π΅').
Π ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΡΠΌΠΈΡΡΠ», ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° Π³ΡΡΠΏΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΎ ΡΠ°ΠΊΠ°:
+----------------------------------------+
| consumer_group_name: mygroup
| consumer_group_stream: somekey
| last_delivered_id: 1292309234234-92
|
| consumers:
| "consumer-1" Ρ ΠΈΠ·ΠΎΡΡΠ°Π½Π°Π»ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ
| 1292309234234-4
| 1292309234232-8
| "consumer-42" Ρ ΠΈΠ·ΠΎΡΡΠ°Π½Π°Π»ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ
| ... (ΠΈ ΡΠ°ΠΊΠ° Π½Π°ΡΠ°ΡΡΠΊ)
+----------------------------------------+
Π‘Π΅Π³Π° Π΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΠΌ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° Consumer Group, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:
- XGROUP ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅, ΡΠ½ΠΈΡΠΎΠΆΠ°Π²Π°Π½Π΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π³ΡΡΠΏΠΈ
- XREADGROUP ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° ΠΏΠΎΡΠΎΠΊΠ° ΠΏΡΠ΅Π· Π³ΡΡΠΏΠ°ΡΠ°
- XACK β ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Π°Π±ΠΎΠ½Π°ΡΠ° Π΄Π° ΠΌΠ°ΡΠΊΠΈΡΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΎ
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Consumer Group
ΠΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΠ΅ ΠΏΠΎΡΠΎΠΊΡΡ mystream Π²Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°. Π’ΠΎΠ³Π°Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π³ΡΡΠΏΠ°ΡΠ° ΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°:
> XGROUP CREATE mystream mygroup $
OK
ΠΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π³ΡΡΠΏΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅Π΄Π°Π΄Π΅ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΎΡ ΠΊΠΎΠΉΡΠΎ Π³ΡΡΠΏΠ°ΡΠ° ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠΊΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈ Π½ΠΎΠ²ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ $ (ΠΊΠ°ΠΊΡΠΎ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅). ΠΠΊΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠΎΡΠΎΡΠΈΠΌ 0, Π³ΡΡΠΏΠ°ΡΠ° ΡΠ΅ ΠΈΠΌΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π²ΡΠΈΡΠΊΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΏΠΎΡΠΎΠΊΠ°.
Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ Π³ΡΡΠΏΠ°ΡΠ° Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½Π°, ΠΌΠΎΠΆΠ΅ΠΌ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Π΄Π° ΡΠ΅ΡΠ΅ΠΌ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XREADGROUP. Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° XREAD ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½Π° ΠΎΠΏΡΠΈΡ BLOCK. ΠΠΎ ΠΈΠΌΠ° Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½Π° ΠΎΠΏΡΠΈΡ GROUP, ΠΊΠΎΡΡΠΎ Π²ΠΈΠ½Π°Π³ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΠΎΡΠ²Π° Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°: ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π³ΡΡΠΏΠ°ΡΠ° ΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π°Π±ΠΎΠ½Π°ΡΠ°. ΠΠΏΡΠΈΡΡΠ° COUNT ΡΡΡΠΎ Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π°.
ΠΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊΠ°, Π½Π΅ΠΊΠ° ΠΏΠΎΡΡΠ°Π²ΠΈΠΌ ΡΠ°ΠΌ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ:
> XADD mystream * message apple
1526569495631-0
> XADD mystream * message orange
1526569498055-0
> XADD mystream * message strawberry
1526569506935-0
> XADD mystream * message apricot
1526569535168-0
> XADD mystream * message banana
1526569544280-0
Π‘Π΅Π³Π° Π΄Π° ΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΠΌ ΡΠΎΠ·ΠΈ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠ΅Π· Π³ΡΡΠΏΠ°ΡΠ°:
> XREADGROUP GROUP mygroup Alice COUNT 1 STREAMS mystream >
1) 1) "mystream"
2) 1) 1) 1526569495631-0
2) 1) "message"
2) "apple"
ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅ Π±ΡΠΊΠ²Π°Π»Π½ΠΎ Π³Π»Π°ΡΠΈ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:
Β«ΠΠ·, ΠΠ»ΠΈΡΠ°-Π°Π±ΠΎΠ½Π°Ρ, ΡΠ»Π΅Π½ Π½Π° Π³ΡΡΠΏΠ°ΡΠ° mygroup, ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ° ΠΎΡ ΠΏΠΎΡΠΎΠΊΠ° mystream Π΅Π΄Π½ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ Π΅ Π±ΠΈΠ»ΠΎ Π΄ΠΎΡΡΠ°Π²ΡΠ½ΠΎ Π½Π° Π½ΠΈΠΊΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΈ.Β»
ΠΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ Π°Π±ΠΎΠ½Π°ΡΡΡ ΠΈΠ·Π²ΡΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Ρ Π³ΡΡΠΏΠ°ΡΠ°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΠΎΡΠΈ ΡΠ²ΠΎΠ΅ΡΠΎ ΠΈΠΌΠ΅, ΠΊΠΎΠ΅ΡΠΎ Π½Π΅Π΄Π²ΡΡΠΌΠΈΡΠ»Π΅Π½ΠΎ Π³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ° Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π³ΡΡΠΏΠ°ΡΠ°. Π ΠΏΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠΌΠ° ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ΅Π½ Π΄Π΅ΡΠ°ΠΉΠ» β ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Β«>Β». Π’ΠΎΠ·ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΈΠ»ΡΡΠΈΡΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ°, ΠΎΡΡΠ°Π²ΡΠΉΠΊΠΈ ΡΠ°ΠΌΠΎ ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ° Π±ΠΈΠ»ΠΈ Π΄ΠΎΡΡΠ°Π²ΡΠ½ΠΈ.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ°, Π² ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΡΠ»ΡΡΠ°ΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠ°ΡΠΎ 0 ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΊΠΈ Π΄ΡΡΠ³ Π²Π°Π»ΠΈΠ΄Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XREADGROUP ΡΠ΅ Π²ΠΈ Π²ΡΡΠ½Π΅ ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° Ρ ΡΡΠ°ΡΡΡ Β«pendingΒ», ΠΊΠΎΠΈΡΠΎ ΡΠ° Π±ΠΈΠ»ΠΈ Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π½Π° ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡ Π°Π±ΠΎΠ½Π°Ρ (ΠΠ»ΠΈΡΠ°), Π½ΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ° Π±ΠΈΠ»ΠΈ ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½ΠΈ ΡΡΠ΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XACK.
ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠ°ΡΠΎ Π²Π΅Π΄Π½Π°Π³Π° ΠΏΠΎΡΠΎΡΠΈΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ 0, Π±Π΅Π· ΠΎΠΏΡΠΈΡΡΠ° COUNT. ΠΡΠΎΡΡΠΎ ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎΡΠΎ ΠΈΠ·ΡΠ°ΠΊΠ²Π°ΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Ρ ΡΠ±ΡΠ»ΠΊΠ°ΡΠ°:
> XREADGROUP GROUP mygroup Alice STREAMS mystream 0
1) 1) "mystream"
2) 1) 1) 1526569495631-0
2) 1) "message"
2) "apple"
ΠΠΎ Π°ΠΊΠΎ ΠΏΠΎΡΠ²ΡΡΠ΄ΠΈΠΌ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΊΠ°ΡΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΎ, ΡΠΎ Π²Π΅ΡΠ΅ Π½ΡΠΌΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°:
> XACK mystream mygroup 1526569495631-0
(integer) 1
> XREADGROUP GROUP mygroup Alice STREAMS mystream 0
1) 1) "mystream"
2) (ΠΏΡΠ°Π·Π΅Π½ ΡΠΏΠΈΡΡΠΊ ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ)
Π‘Π΅Π³Π° Π΄ΠΎΠΉΠ΄Π΅ ΡΠ΅Π΄ΡΡ Π½Π° ΠΠΎΠ± Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ Π½Π΅ΡΠΎ:
> XREADGROUP GROUP mygroup Bob COUNT 2 STREAMS mystream >
1) 1) "mystream"
2) 1) 1) 1526569498055-0
2) 1) "message"
2) "orange"
2) 1) 1526569506935-0
2) 1) "message"
2) "strawberry"
ΠΠΎΠ±, ΡΠ»Π΅Π½ Π½Π° Π³ΡΡΠΏΠ°ΡΠ° mygroup, ΠΏΠΎΠΈΡΠΊΠ° Π½Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π΄Π²Π΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΡΡΠΎΠ±ΡΠ°Π²Π° ΡΠ°ΠΌΠΎ Π·Π° Π½Π΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Β«>Β». ΠΠ°ΠΊΡΠΎ Π²ΠΈΠΆΠ΄Π°ΡΠ΅, ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Β«appleΒ» Π½Π΅ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²Π΅ΡΠ΅ Π΅ Π±ΠΈΠ»ΠΎ Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΎ Π½Π° ΠΠ»ΠΈΡΠ°, ΠΈ Π·Π°ΡΠΎΠ²Π° ΠΠΎΠ± ΠΏΠΎΠ»ΡΡΠ°Π²Π° Β«orangeΒ» ΠΈ Β«strawberryΒ».
ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΠΠ»ΠΈΡΠ°, ΠΠΎΠ± ΠΈ Π²ΡΠ΅ΠΊΠΈ Π΄ΡΡΠ³ Π°Π±ΠΎΠ½Π°Ρ Π½Π° Π³ΡΡΠΏΠ°ΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ΡΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ ΠΏΠΎΡΠΎΠΊ. Π’Π΅ ΡΡΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ΡΠ°Ρ ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Ρ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° ΠΊΠ°ΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ.
ΠΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π½Π΅ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄:
- ΠΠ΅Π΄Π½ΡΠΆ ΡΠΎΠΌ Π°Π±ΠΎΠ½Π°ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XREADGROUP, ΡΠΎΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° Π² ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Β«pendingΒ» ΠΈ ΡΠ΅ Π·Π°ΠΊΡΠ΅ΠΏΠ²Π° Π·Π° ΡΠΎΠ·ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ Π°Π±ΠΎΠ½Π°Ρ. ΠΡΡΠ³ΠΈ Π°Π±ΠΎΠ½Π°ΡΠΈ Π½Π° Π³ΡΡΠΏΠ°ΡΠ° Π½ΡΠΌΠ° Π΄Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ°Ρ ΡΠΎΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
- ΠΠ±ΠΎΠ½Π°ΡΠΈΡΠ΅ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠΈ ΠΏΡΡΠ²ΠΎΡΠΎ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π°Π½Π΅, Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ ΠΈΠ·ΡΠΈΡΠ½ΠΎ.
- Π‘ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° XREADGROUP ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΡΠΎΠΊΠ° Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, Π½ΠΎ Π·Π° Π΄Π° ΠΏΡΠΎΡΠ°Π±ΠΎΡΠΈ, ΡΡΡΠ±Π²Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π³ΡΡΠΏΠΈ Ρ Π΅Π΄Π½Π°ΠΊΠ²ΠΎ ΠΈΠΌΠ΅ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΠΎΡΠΎΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° XGROUP
ΠΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡ
ΠΠ±ΠΎΠ½Π°ΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΠΈ ΡΠ»Π΅Π΄ ΡΡΠΈΠ² ΠΈ Π΄Π° ΠΏΡΠ΅Π³Π»Π΅Π΄Π° ΡΠΏΠΈΡΡΠΊΠ° ΡΠΈ ΡΡΡ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΡΡ ΡΡΠ°ΡΡΡ βΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°β. Π Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΎΠ±Π°ΡΠ΅ Π°Π±ΠΎΠ½Π°ΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π½Π΅ ΡΡΠΏΠ΅ΡΡ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»Π½ΠΎ. ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΡΠ°Π½Π΅ Ρ Π²ΠΈΡΡΡΠΈΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° Π°Π±ΠΎΠ½Π°ΡΠ°, Π°ΠΊΠΎ ΡΠΎΠΉ Π½Π΅ ΡΡΠΏΠ΅Π΅ Π΄Π° ΡΠ΅ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΠΈ ΡΠ»Π΅Π΄ ΡΡΠΈΠ²?
Consumer Group ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΎΡΠ½ΠΎ Π² ΡΠ°ΠΊΠΈΠ²Π° ΡΠ»ΡΡΠ°ΠΈ β ΠΊΠΎΠ³Π°ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΡΠΌΠ΅Π½ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊΡΡ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ.
ΠΡΡΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XPENDING, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π° Π²ΡΠΈΡΠΊΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² Π³ΡΡΠΏΠ°ΡΠ° ΡΡΡ ΡΡΠ°ΡΡΡ βΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°β. Π Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠ°ΡΠ° ΡΠΈ ΡΠΎΡΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΡΠ°ΠΌΠΎ Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°: ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΠΎΡΠΎΠΊΠ° ΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π³ΡΡΠΏΠ°ΡΠ°:
> XPENDING mystream mygroup
1) (integer) 2
2) 1526569498055-0
3) 1526569506935-0
4) 1) 1) "Bob"
2) "2"
ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΠΈΠ·Π²Π΅Π΄Π΅ Π±ΡΠΎΡ Π½Π° Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π·Π° ΡΡΠ»Π°ΡΠ° Π³ΡΡΠΏΠ° ΠΈ Π·Π° Π²ΡΠ΅ΠΊΠΈ Π°Π±ΠΎΠ½Π°Ρ. ΠΠΌΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎ ΠΠΎΠ± Ρ Π΄Π²Π΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠΈΡΠΊΠ°Π½ΠΎ ΠΎΡ ΠΠ»ΠΈΡΠ°, Π±Π΅ΡΠ΅ ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° XACK.
ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠΈΡΠΊΠ°ΠΌΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ:
ΠΠ§ΠΠΠΠΠΠ {key} {groupname} [{start-id} {end-id} {count} [{consumer-name}]]
{start-id} {end-id} β Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ (ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° β-β ΠΈ β+β)
{count} β Π±ΡΠΎΠΉ ΠΎΠΏΠΈΡΠΈ Π·Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠ°
{consumer-name} β ΠΈΠΌΠ΅ Π½Π° Π³ΡΡΠΏΠ°ΡΠ°
> XPENDING mystream mygroup - + 10
1) 1) 1526569498055-0
2) "Bob"
3) (integer) 74170458
4) (integer) 1
2) 1) 1526569506935-0
2) "Bob"
3) (integer) 74170458
4) (integer) 1
Π‘Π΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π·Π° Π²ΡΡΠΊΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅: ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΈΠΌΠ΅ Π½Π° Π°Π±ΠΎΠ½Π°ΡΠ°, Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΏΡΠ΅ΡΡΠΎΠΉ Π² ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΈ Π½Π°ΠΊΡΠ°Ρ Π±ΡΠΎΠΉ ΠΎΠΏΠΈΡΠΈ Π·Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠ°. ΠΠΌΠ°ΠΌΠ΅ Π΄Π²Π΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ ΠΠΎΠ±, ΠΈ ΡΠ΅ ΠΏΡΠ΅ΡΡΠΎΡΠ²Π°Ρ Π² ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° 74170458 ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ, ΠΎΠΊΠΎΠ»ΠΎ 20 ΡΠ°ΡΠ°.
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Π½ΠΈΡΠΎ Π½Π΅ ΠΏΡΠ΅ΡΠΈ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ XRANGE.
> XRANGE mystream 1526569498055-0 1526569498055-0
1) 1) 1526569498055-0
2) 1) "message"
2) "orange"
ΠΡΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ²ΡΠΎΡΠΈΠΌ ΡΡΡΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄Π²Π° ΠΏΡΡΠΈ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅. Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π°, ΠΠ»ΠΈΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ΡΠΈ, ΡΠ΅ ΡΠ»Π΅Π΄ 20 ΡΠ°ΡΠ° ΠΏΡΠ΅ΡΡΠΎΠΉ ΠΠΎΠ± Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π½ΡΠΌΠ° Π΄Π° ΡΠ΅ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΠΈ, ΠΈ Π΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΠΏΠΎΠΈΡΠΊΠ° ΡΠ΅Π·ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ Π΄Π° Π²ΡΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈ ΡΡΡ Π½Π°ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²ΠΌΠ΅ΡΡΠΎ ΠΠΎΠ±. ΠΠ° ΡΠ΅Π»ΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XCLAIM:
XCLAIM {key} {group} {consumer} {min-idle-time} {ID-1} {ID-2} ... {ID-N}
Π‘ ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ "ΡΡΠΆΠ΄ΠΎ" ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΎ, ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊΠ° Π½Π° {consumer}. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠΌ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π±Π΅Π·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ {min-idle-time}. Π’ΠΎΠ²Π° ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ°, ΠΏΡΠΈ ΠΊΠΎΡΡΠΎ Π΄Π²Π°ΠΌΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°Ρ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° ΡΠΌΠ΅Π½ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊΠ° Π½Π° Π΅Π΄Π½ΠΈ ΠΈ ΡΡΡΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ:
ΠΠ»ΠΈΠ΅Π½Ρ 1: XCLAIM mystream mygroup ΠΠ»ΠΈΡΠ° 3600000 1526569498055-0
ΠΠ»ΠΈΠ΅Π½Ρ 2: XCLAIM mystream mygroup ΠΠΎΡΠ° 3600000 1526569498055-0
ΠΡΡΠ²ΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ΅ Π½ΡΠ»ΠΈΡΠ° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° Π±Π΅Π·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈ Π±ΡΠΎΡ Π½Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠΈΡΠ΅. Π’Π°ΠΊΠ° Π²ΡΠΎΡΠΈΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ Π½ΡΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΈΡΠΊΠ°.
> XCLAIM mystream mygroup Alice 3600000 1526569498055-0
1) 1) 1526569498055-0
2) 1) "message"
2) "orange"
Π‘ΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π±Π΅ΡΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΠΎΠΈΡΠΊΠ°Π½ΠΎ ΠΎΡ ΠΠ»ΠΈΡΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ Π΄Π° ΠΏΠΎΡΠ²ΡΡΠ΄ΠΈ.
ΠΡ Π³ΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ, ΡΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ° Π²ΡΡΡΠ° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΡΠΎΠ²Π° Π½Π΅ Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ. ΠΠΏΡΠΈΡΡΠ° JUSTID ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π²ΡΡΡΠ°Π½Π΅ ΡΠ°ΠΌΠΎ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ°. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π°ΠΊΠΎ Π½Π΅ Π²ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°Ρ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈΡΠ΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΠ²Π΅Π»ΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°.
ΠΡΠΎΡΡ Π½Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠΈΡΠ΅
ΠΡΠΎΡΡΡΡ, ΠΊΠΎΠΉΡΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΡΠ΅ Π² ΠΈΠ·Ρ ΠΎΠ΄Π° XPENDING Π΅ Π±ΡΠΎΡΡ Π½Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠΈΡΠ΅ Π½Π° Π²ΡΡΠΊΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. Π’ΠΎΠ·ΠΈ Π±ΡΠΎΡΡ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° ΠΏΠΎ Π΄Π²Π° Π½Π°ΡΠΈΠ½Π°: ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ΅ ΠΏΠΎΠΈΡΠΊΠ° ΡΡΠ΅Π· XCLAIM ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ XREADGROUP.
ΠΠΎΡΠΌΠ°Π»Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΡΠ»ΡΡΠΈ, ΡΠ΅ Π½ΡΠΊΠΎΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ΅ Π΄ΠΎΡΡΠ°Π²ΡΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΡΠΈ. ΠΠ°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡΠΎ Π΅, ΡΠ΅ Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° Π²ΡΠΈΡΠΊΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ. ΠΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π²ΡΠ·Π½ΠΈΠΊΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΠΎΡΠ°Π΄ΠΈ ΠΏΠΎΠ²ΡΠ΅Π΄Π° Π½Π° ΡΠ°ΠΌΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° ΠΌΡ Π΄Π° ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° Π³ΡΠ΅ΡΠΊΠ° Π² ΠΊΠΎΠ΄Π° Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. Π ΡΠ°ΠΊΡΠ² ΡΠ»ΡΡΠ°ΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠΊΠ°ΠΆΠ΅, ΡΠ΅ Π½ΠΈΠΊΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈ ΡΠΎΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π±ΡΠΎΡΡ Π½Π° ΠΎΠΏΠΈΡΠΈΡΠ΅ Π·Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠ°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΎΠ·ΠΈ Π±ΡΠΎΡΡ, Π·Π° Π΄Π° ΠΎΡΠΊΡΠΈΠ΅ΠΌ ΡΠ°ΠΊΠΈΠ²Π° ΡΠΈΡΡΠ°ΡΠΈΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ Π±ΡΠΎΡΡΡΡ Π½Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠΈΡΠ΅ Π΄ΠΎΡΡΠΈΠ³Π½Π΅ Π·Π°Π΄Π°Π΄Π΅Π½Π° ΠΎΡ Π²Π°Ρ Π²ΠΈΡΠΎΠΊΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π΅ ΠΏΠΎ-ΡΠ°Π·ΡΠΌΠ½ΠΎ Π΄Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΎΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² Π΄ΡΡΠ³ ΠΏΠΎΡΠΎΠΊ ΠΈ Π΄Π° ΡΠ²Π΅Π΄ΠΎΠΌΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ.
Π‘ΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΠΎΠΊΠΎΠ²Π΅ΡΠ΅
ΠΠΊΠΈΠΏ XINFO ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΏΠΎΡΠΎΠΊΠ° ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ Π³ΡΡΠΏΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΡ Π²ΠΈΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
> XINFO STREAM mystream
1) length
2) (integer) 13
3) radix-tree-keys
4) (integer) 1
5) radix-tree-nodes
6) (integer) 2
7) groups
8) (integer) 2
9) first-entry
10) 1) 1524494395530-0
2) 1) "a"
2) "1"
3) "b"
4) "2"
11) last-entry
12) 1) 1526569544280-0
2) 1) "message"
2) "banana"
ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΎΠ±ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΊΠ°Π·Π°Π½ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π‘Π΅Π³Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ:
> XINFO GROUPS mystream
1) 1) ΠΈΠΌΠ΅
2) "mygroup"
3) ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ
4) (integer) 2
5) ΡΠ°ΠΊΠ°ΡΠΈ
6) (integer) 2
2) 1) ΠΈΠΌΠ΅
2) "some-other-group"
3) ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ
4) (integer) 1
5) ΡΠ°ΠΊΠ°ΡΠΈ
6) (integer) 0
ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΎΠ±ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π²ΡΠΈΡΠΊΠΈ Π³ΡΡΠΏΠΈ Π½Π° ΡΠΊΠ°Π·Π°Π½ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅
> XINFO CONSUMERS mystream mygroup
1) 1) ΠΈΠΌΠ΅
2) "Alice"
3) ΡΠ°ΠΊΠ°ΡΠΈ
4) (integer) 1
5) Π±Π΅Π·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅
6) (integer) 9104628
2) 1) ΠΈΠΌΠ΅
2) "Bob"
3) ΡΠ°ΠΊΠ°ΡΠΈ
4) (integer) 1
5) Π±Π΅Π·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅
6) (integer) 83841983
ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π²ΡΠΈΡΠΊΠΈ Π°Π±ΠΎΠ½Π°ΡΠΈ Π½Π° ΡΠΊΠ°Π·Π°Π½ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π³ΡΡΠΏΠ°.
ΠΠΊΠΎ Π·Π°Π±ΡΠ°Π²ΠΈΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°, ΠΏΡΠΎΡΡΠΎ ΡΠ΅ ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π·Π° ΠΏΠΎΠΌΠΎΡ ΠΊΡΠΌ ΡΠ°ΠΌΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
> XINFO HELP
1) XINFO {ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄Π°} Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ... Π°ΡΠ³ΡΠΌΠ΅Π½Ρ. ΠΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΡΠ°:
2) CONSUMERS {ΠΊΠ»ΡΡ} {Π³ΡΡΠΏΠ°} -- ΠΠΎΠΊΠ°Π·Π²Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡΠ΅ Π³ΡΡΠΏΠΈ Π½Π° Π³ΡΡΠΏΠ° {Π³ΡΡΠΏΠ°}.
3) GROUPS {ΠΊΠ»ΡΡ} -- ΠΠΎΠΊΠ°Π·Π²Π° Π³ΡΡΠΏΠΈΡΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ.
4) STREAM {ΠΊΠ»ΡΡ} -- ΠΠΎΠΊΠ°Π·Π²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ.
5) HELP -- ΠΡΠΏΠ΅ΡΠ°ΡΠ²Π° ΡΠ°Π·ΠΈ ΠΏΠΎΠΌΠΎΡ.
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ
ΠΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΠΈΡΠΊΠ°Ρ Π΄Π° ΡΡΠ±ΠΈΡΠ°Ρ Π΄Π°Π½Π½ΠΈ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΠ½Π°Π³ΠΈ. Π§Π΅ΡΡΠΎ Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌ Π±ΡΠΎΠΉ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ. Π Π΄ΡΡΠ³ΠΈΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π² Π΄ΡΡΠ³ΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° Π·Π°Π΄Π°Π΄Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° MAXLEN Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XADD:
> XADD mystream MAXLEN 2 * ΡΡΠΎΠΉΠ½ΠΎΡΡ 1
1526654998691-0
> XADD mystream MAXLEN 2 * ΡΡΠΎΠΉΠ½ΠΎΡΡ 2
1526654999635-0
> XADD mystream MAXLEN 2 * ΡΡΠΎΠΉΠ½ΠΎΡΡ 3
1526655000369-0
> XLEN mystream
(integer) 2
> XRANGE mystream - +
1) 1) 1526654999635-0
2) 1) "ΡΡΠΎΠΉΠ½ΠΎΡΡ"
2) "2"
2) 1) 1526655000369-0
2) 1) "ΡΡΠΎΠΉΠ½ΠΎΡΡ"
2) "3"
ΠΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° MAXLEN ΡΡΠ°ΡΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΠ΅ ΠΈΠ·ΡΡΠΈΠ²Π°Ρ ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° ΡΠΊΠ°Π·Π°Π½Π°ΡΠ° Π΄ΡΠ»ΠΆΠΈΠ½Π°, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠΌΠ° ΠΏΠΎΡΡΠΎΡΠ½Π΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΎΡΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π½Π΅ ΠΏΠΎ Π½Π°ΠΉ-ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΈΡ Π½Π°ΡΠΈΠ½ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° Redis. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ°, ΠΊΠ°ΠΊΡΠΎ ΡΠ»Π΅Π΄Π²Π°:
XADD mystream MAXLEN ~ 1000 * ... ΠΏΠΎΠ»Π΅ΡΠ° Π·Π° Π·Π°ΠΏΠΈΡΠΈ ΡΡΠΊ ...
ΠΡΠ³ΡΠΌΠ΅Π½ΡΡΡ ~ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°ΠΌΠ΅ Π΄ΡΠ»ΠΆΠΈΠ½Π°ΡΠ° Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ. Π Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π²ΡΡΠΊΠΎ ΡΠΈΡΠ»ΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΡΠ°Π²Π½ΠΎ Π½Π° ΠΈΠ»ΠΈ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠΎ ΠΎΡ 1000 (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 1000, 1010 ΠΈΠ»ΠΈ 1030). ΠΡΠΎΡΡΠΎ Π½ΠΈΠ΅ ΡΠ²Π½ΠΎ ΠΏΠΎΡΠΎΡΠΈΡ
ΠΌΠ΅, ΡΠ΅ ΠΈΡΠΊΠ°ΠΌΠ΅ Π½Π°ΡΠ΅ΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π° ΡΡΡ
ΡΠ°Π½ΠΈ Π½Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ 1000 Π·Π°ΠΏΠΈΡΠ°. Π’ΠΎΠ²Π° ΠΏΡΠ°Π²ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½Π° Π² Redis.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΈ ΠΎΡΠ΄Π΅Π»Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° XTRIM, ΠΊΠΎΡΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΡΡΠΎΡΠΎ:
> XTRIM mystream MAXLEN 10
> XTRIM mystream MAXLEN ~ 10
ΠΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ
Redis Stream Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠ° Π½Π° slave Π½ΠΎΠ΄ΠΈ ΠΈ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π² ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ ΡΠΈΠΏ AOF (ΡΠ½ΠΈΠΌΠΊΠ° Π½Π° Π²ΡΠΈΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ) ΠΈ RDB (Π»ΠΎΠ³ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° Π·Π°ΠΏΠΈΡ). Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° Consumer Groups. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π°ΠΊΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ Π² ΡΡΠ°ΡΡΡ Β«pendingΒ» Π½Π° master Π½ΠΎΠ΄Π°ΡΠ°, ΡΠΎ Π½Π° slave Π½ΠΎΠ΄ΠΈΡΠ΅ ΡΠΎΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΠΈΠΌΠ° ΡΡΡΠΈΡ ΡΡΠ°ΡΡΡ.
ΠΠ·ΡΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΎΡ ΠΏΠΎΡΠΎΠΊΠ°
ΠΠ° ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° XDEL. ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΠΎΡΠΎΠΊΠ°, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΡΠ»Π΅Π΄Π²Π°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΡΡΠΈΡΡ:
> XRANGE mystream - + COUNT 2
1) 1) 1526654999635-0
2) 1) "value"
2) "2"
2) 1) 1526655000369-0
2) 1) "value"
2) "3"
> XDEL mystream 1526654999635-0
(integer) 1
> XRANGE mystream - + COUNT 2
1) 1) 1526655000369-0
2) 1) "value"
2) "3"
ΠΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½Π° Π½Π΅ Π²Π΅Π΄Π½Π°Π³Π°.
ΠΠΎΡΠΎΠΊΠΎΠ²Π΅ Ρ Π½ΡΠ»Π΅Π²Π° Π΄ΡΠ»ΠΆΠΈΠ½Π°
Π Π°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠΈΡΠ΅ ΠΈ Π΄ΡΡΠ³ΠΈΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ Π² Redis Π΅, ΡΠ΅ ΠΊΠΎΠ³Π°ΡΠΎ Π΄ΡΡΠ³ΠΈΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ Π²Π΅ΡΠ΅ Π½ΡΠΌΠ°Ρ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π² ΡΠ΅Π±Π΅ ΡΠΈ, Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° ΡΠ°ΠΌΠ°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠ·ΡΡΠΈΡΠ° ΠΎΡ ΠΏΠ°ΠΌΠ΅ΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΡΡΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΈΠ·ΡΡΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° ZREM ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π° Π½Π° ΠΏΠΎΡΠΎΠΊΠΈΡΠ΅ ΠΈΠΌ Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π΄Π° ΠΎΡΡΠ°Π½Π°Ρ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, Π΄ΠΎΡΠΈ Π΄Π° Π½ΡΠΌΠ°Ρ Π½ΠΈΡΠΎ Π΅Π΄ΠΈΠ½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ Π²ΡΡΡΠ΅.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Redis Stream Π΅ ΠΈΠ΄Π΅Π°Π»Π΅Π½ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π±ΡΠΎΠΊΠ΅ΡΠΈ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΎΠΏΠ°ΡΠΊΠΈ Π·Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½ΠΈ ΠΆΡΡΠ½Π°Π»ΠΈ ΠΈ ΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ ΠΈΡΡΠΎΡΠΈΡ.
ΠΠ°ΠΊΡΠΎ Π²Π΅Π΄Π½ΡΠΆ ΠΊΠ°Π·Π° , ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ β ΡΠΎΠ²Π° ΡΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈ ΠΏΠ»ΡΡ ΡΡΡΡΠΊΡΡΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ, Π° Redis Π²Π΅ΡΠ΅ Π²ΠΈ Π΄Π°Π²Π° ΠΈ Π΄Π²Π΅ΡΠ΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
