Redis Stream Π΅ Π½ΠΎΠ² Π°ΠΏΡΡΡΠ°ΠΊΡΠ΅Π½ ΡΠΈΠΏ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎΠ²Π΅Π΄Π΅Π½ Π²ΠΎ Redis ΡΠΎ Π²Π΅ΡΠ·ΠΈΡΠ° 5.0
ΠΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»Π½ΠΎ, Redis Stream Π΅ Π»ΠΈΡΡΠ° Π½Π° ΠΊΠΎΡΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ. Π‘Π΅ΠΊΠΎΡ Π·Π°ΠΏΠΈΡ ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ. Π‘ΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ, ID ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΠΈ Π²ΠΊΠ»ΡΡΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΠ΅ΡΠ°Ρ. ΠΠ°ΡΠΎΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π±Π°ΡΠ°ΡΠ΅ ΠΎΠΏΡΠ΅Π³ Π½Π° Π·Π°ΠΏΠΈΡΠΈ ΡΠΎ ΡΠ΅ΠΊΠΎΡ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ ΠΈΠ»ΠΈ Π΄Π° ΠΏΡΠΈΠΌΠ°ΡΠ΅ Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΠΏΡΠΈΡΡΠΈΠ³Π½ΡΠ²Π°Π°Ρ Π²ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΡ, ΡΠ»ΠΈΡΠ½ΠΎ ΠΊΠ°ΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βtail -fβ Π½Π° Unix ΡΡΠΎ ΡΠΈΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ° ΠΈ Π·Π°ΠΌΡΠ·Π½ΡΠ²Π° Π΄ΠΎΠ΄Π΅ΠΊΠ° ΡΠ΅ΠΊΠ° Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠ°Π±Π΅Π»Π΅ΠΆΠ΅ΡΠ΅ Π΄Π΅ΠΊΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ»ΡΡΠ°Π°Ρ Π½ΠΈΡΠΊΠ° Π²ΠΎ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅, ΠΈΡΡΠΎ ΡΠΎΠ»ΠΊΡ ΠΏΡΠΎΡΠ΅ΡΠΈ "tail -f" ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠΈΡΠ°Π°Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ Π±Π΅Π· Π΄Π° ΡΠ΅ Π²ΠΎ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ Π΅Π΄Π΅Π½ ΡΠΎ Π΄ΡΡΠ³.
ΠΠ° Π΄Π° Π³ΠΈ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΠ΅ ΡΠΈΡΠ΅ ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΠ²ΠΊΠΈ ΠΎΠ΄ Π½ΠΎΠ²ΠΈΠΎΡ ΡΠΈΠΏ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, Π°ΡΠ΄Π΅ Π½Π°Π±ΡΠ·ΠΈΠ½Π° Π΄Π° Π³ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ ΠΎΠ΄Π°ΠΌΠ½Π° ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈ Π½Π° Redis ΠΊΠΎΠΈ Π΄Π΅Π»ΡΠΌΠ½ΠΎ ΡΠ° ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠ°Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠ° Π½Π° Redis Stream.
Π Π΅Π΄ΠΈΡ PUB/SUB
Redis Pub/Sub Π΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π΅Π½ ΡΠΈΡΡΠ΅ΠΌ Π·Π° ΠΏΠΎΡΠ°ΠΊΠΈ Π²Π΅ΡΠ΅ Π²Π³ΡΠ°Π΄Π΅Π½ Π²ΠΎ Π²Π°ΡΠ°ΡΠ° ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠ° Π·Π° ΠΊΠ»ΡΡΠ΅Π²ΠΈ. Π‘Π΅ΠΏΠ°ΠΊ, Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎΡΡΠ° ΠΈΠΌΠ° ΡΠ΅Π½Π°:
- ΠΠΊΠΎ ΠΈΠ·Π΄Π°Π²Π°ΡΠΎΡ ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅ΠΊΠΎΡΠ° ΠΏΡΠΈΡΠΈΠ½Π° Π½Π΅ ΡΡΠΏΠ΅Π΅, ΡΠΎΠ³Π°Ρ ΡΠΎΡ Π³ΠΈ Π³ΡΠ±ΠΈ ΡΠΈΡΠ΅ ΡΠ²ΠΎΠΈ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈ
- ΠΠ·Π΄Π°Π²Π°ΡΠΎΡ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ° Π·Π½Π°Π΅ ΡΠΎΡΠ½Π°ΡΠ° Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΡΠΈΡΠ΅ Π½Π΅Π³ΠΎΠ²ΠΈ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈ
- ΠΠ·Π΄Π°Π²Π°ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΏΡΠ΅ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π° ΡΠ²ΠΎΠΈΡΠ΅ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈ ΡΠΎ ΡΠ°Π±ΠΎΡΠ° Π°ΠΊΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΡΠ΅ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°Π°Ρ ΠΏΠΎΠ±ΡΠ·ΠΎ ΠΎΡΠΊΠΎΠ»ΠΊΡ ΡΡΠΎ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π°Π°Ρ
- ΠΠΎΡΠ°ΠΊΠ°ΡΠ° ΡΠ΅ Π±ΡΠΈΡΠ΅ ΠΎΠ΄ ΡΠ°ΠΌΠΏΠΎΠ½ΠΎΡ Π½Π° ΠΈΠ·Π΄Π°Π²Π°ΡΠΎΡ Π²Π΅Π΄Π½Π°Ρ ΠΏΠΎ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ, Π±Π΅Π· ΠΎΠ³Π»Π΅Π΄ Π½Π° ΡΠΎΠ° Π½Π° ΠΊΠΎΠ»ΠΊΡ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈ ΠΈΠΌ Π±ΠΈΠ»Π° ΠΈΡΠΏΠΎΡΠ°ΡΠ°Π½Π° ΠΈ ΠΊΠΎΠ»ΠΊΡ Π±ΡΠ·ΠΎ ΠΌΠΎΠΆΠ΅Π»Π΅ Π΄Π° ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Ρ ΠΎΠ²Π°Π° ΠΏΠΎΡΠ°ΠΊΠ°.
- Π‘ΠΈΡΠ΅ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈ ΡΠ΅ ΡΠ° Π΄ΠΎΠ±ΠΈΡΠ°Ρ ΠΏΠΎΡΠ°ΠΊΠ°ΡΠ° Π²ΠΎ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅. Π‘Π°ΠΌΠΈΡΠ΅ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈ ΠΌΠΎΡΠ° Π½Π΅ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ°Ρ ΠΌΠ΅ΡΡ ΡΠ΅Π±Π΅ Π·Π° ΡΠ΅Π΄ΠΎΡΠ»Π΅Π΄ΠΎΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΈΡΡΠ°ΡΠ° ΠΏΠΎΡΠ°ΠΊΠ°.
- ΠΠ΅ ΠΏΠΎΡΡΠΎΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ Π΄Π° ΠΏΠΎΡΠ²ΡΠ΄ΠΈ Π΄Π΅ΠΊΠ° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊΠΎΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈΠ» ΠΏΠΎΡΠ°ΠΊΠ°. ΠΠΊΠΎ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊΠΎΡ ΠΏΡΠΈΠΌΠΈ ΠΏΠΎΡΠ°ΠΊΠ° ΠΈ ΠΏΠ°Π΄Π½Π΅ Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ°, ΠΈΠ·Π΄Π°Π²Π°ΡΠΎΡ Π½Π΅ΠΌΠ° Π΄Π° Π·Π½Π°Π΅ Π·Π° ΡΠΎΠ°.
Π Π΅Π΄ΠΈΡ Π»ΠΈΡΡΠ°
Redis List Π΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠ½Π° ΡΡΡΡΠΊΡΡΡΠ° ΠΊΠΎΡΠ° ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΡΠΈΡΠ°ΡΠ΅. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ ΠΈ ΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΡΠ°ΠΊΠΈ ΠΎΠ΄ ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ ΠΈΠ»ΠΈ ΠΊΡΠ°ΡΠΎΡ Π½Π° Π»ΠΈΡΡΠ°ΡΠ°. ΠΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΎΠ²Π°Π° ΡΡΡΡΠΊΡΡΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π΄ΠΎΠ±Π°Ρ ΠΎΡΠ°ΠΊ ΠΈΠ»ΠΈ ΡΠ΅Π΄ΠΈΡΠ° Π·Π° Π²Π°ΡΠΈΠΎΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ ΡΠΈΡΡΠ΅ΠΌ, ΠΈ Π²ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ»ΡΡΠ°ΠΈ ΡΠΎΠ° ΡΠ΅ Π±ΠΈΠ΄Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ. ΠΠ»Π°Π²Π½ΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈΠΊΠΈ ΠΎΠ΄ Redis Pub/Sub:
- ΠΠΎΡΠ°ΠΊΠ°ΡΠ° ΡΠ΅ Π΄ΠΎΡΡΠ°Π²ΡΠ²Π° Π΄ΠΎ Π΅Π΄Π΅Π½ ΠΊΠ»ΠΈΠ΅Π½Ρ. ΠΡΠ²ΠΈΠΎΡ ΠΊΠ»ΠΈΠ΅Π½Ρ Π±Π»ΠΎΠΊΠΈΡΠ°Π½ Π·Π° ΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠ² ΡΠ΅ Π³ΠΈ Π΄ΠΎΠ±ΠΈΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅.
- ΠΠ»ΠΈΠ½Ρ ΠΌΠΎΡΠ° ΡΠ°ΠΌΠΈΠΎΡ Π΄Π° ΡΠ° ΠΈΠ½ΠΈΡΠΈΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ°ΡΠ° Π·Π° ΡΠΈΡΠ°ΡΠ΅ Π·Π° ΡΠ΅ΠΊΠΎΡΠ° ΠΏΠΎΡΠ°ΠΊΠ°. ΠΠΈΡΡΠ° Π½Π΅ Π·Π½Π°Π΅ Π½ΠΈΡΡΠΎ Π·Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅.
- ΠΠΎΡΠ°ΠΊΠΈΡΠ΅ ΡΠ΅ ΡΡΠ²Π°Π°Ρ Π΄ΠΎΠ΄Π΅ΠΊΠ° Π½Π΅ΠΊΠΎΡ Π½Π΅ Π³ΠΈ ΠΏΡΠΎΡΠΈΡΠ° ΠΈΠ»ΠΈ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π½Π΅ Π³ΠΈ ΠΈΠ·Π±ΡΠΈΡΠ΅. ΠΠΊΠΎ Π³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Redis Π΄Π° Π³ΠΈ ΠΏΡΠ΅ΡΡΠ»Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π½Π° Π΄ΠΈΡΠΊΠΎΡ, ΡΠΎΠ³Π°Ρ Π²Π΅ΡΠΎΠ΄ΠΎΡΡΠΎΡΠ½ΠΎΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π΄ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠ΅ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°.
ΠΠΎΠ²Π΅Π΄ Π²ΠΎ Stream
ΠΠΎΠ΄Π°Π²Π°ΡΠ΅ Π·Π°ΠΏΠΈΡ Π²ΠΎ ΠΏΠΎΡΠΎΠΊ
Π’ΠΈΠΌ XADD Π΄ΠΎΠ΄Π°Π²Π° Π½ΠΎΠ² Π·Π°ΠΏΠΈΡ Π²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΡ. ΠΠ°ΠΏΠΈΡΠΎΡ Π½Π΅ Π΅ ΡΠ°ΠΌΠΎ Π½ΠΈΠ·Π°, ΡΠΎΡ ΡΠ΅ ΡΠΎΡΡΠΎΠΈ ΠΎΠ΄ Π΅Π΄Π΅Π½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠ°ΡΠΎΠ²ΠΈ ΠΊΠ»ΡΡ-Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ. Π’Π°ΠΊΠ°, ΡΠ΅ΠΊΠΎΡ Π·Π°ΠΏΠΈΡ Π΅ Π²Π΅ΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½ ΠΈ Π½Π°Π»ΠΈΠΊΡΠ²Π° Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° CSV.
> XADD mystream * sensor-id 1234 temperature 19.8
1518951480106-0
ΠΠΎ Π³ΠΎΡΠ½ΠΈΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΠ΄Π°Π²Π°ΠΌΠ΅ Π΄Π²Π΅ ΠΏΠΎΠ»ΠΈΡΠ° Π½Π° ΠΏΠΎΡΠΎΠΊΠΎΡ ΡΠΎ ΠΈΠΌΠ΅ΡΠΎ (ΠΊΠ»ΡΡΠΎΡ) βmystreamβ: βsensor-idβ ΠΈ βtemperatureβ ΡΠΎ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈΡΠ΅ β1234β ΠΈ β19.8β, ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΎ. ΠΠ°ΠΊΠΎ Π²ΡΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π·Π΅ΠΌΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΡΠΎ ΡΠ΅ Π±ΠΈΠ΄Π΅ Π΄ΠΎΠ΄Π΅Π»Π΅Π½ Π½Π° Π·Π°ΠΏΠΈΡΠΎΡ - ΠΎΠ²ΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ½ΠΈΠΊΠ°ΡΠ½ΠΎ Π³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π° ΡΠ΅ΠΊΠΎΡ Π·Π°ΠΏΠΈΡ Π²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΡ. ΠΠ΅ΡΡΡΠΎΠ°, Π²ΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΠΌΠΈΠ½Π°Π²ΠΌΠ΅ * Π·Π°ΡΠΎΠ° ΡΡΠΎ ΡΠ°ΠΊΠ°ΠΌΠ΅ Redis Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° Π½ΠΎΠ² ID Π·Π° Π½Π°Ρ. Π‘Π΅ΠΊΠΎΡΠ° Π½ΠΎΠ²Π° Π»ΠΈΡΠ½Π° ΠΊΠ°ΡΡΠ° ΡΠ΅ ΡΠ΅ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°. ΠΠ°ΡΠΎΠ°, ΡΠ΅ΠΊΠΎΡ Π½ΠΎΠ² Π·Π°ΠΏΠΈΡ ΡΠ΅ ΠΈΠΌΠ° ΠΏΠΎΠ²ΠΈΡΠΎΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²ΠΎ ΠΎΠ΄Π½ΠΎΡ Π½Π° ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ.
Π€ΠΎΡΠΌΠ°Ρ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ
ΠΠ Π·Π° Π²Π»Π΅Π· Π²ΡΠ°ΡΠ΅Π½ ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XADD, ΡΠ΅ ΡΠΎΡΡΠΎΠΈ ΠΎΠ΄ Π΄Π²Π° Π΄Π΅Π»Π°:
{millisecondsTime}-{sequenceNumber}
ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈΠΡΠ΅ΠΌΠ΅ β ΠΡΠ΅ΠΌΠ΅ Π½Π° Unix Π²ΠΎ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ (Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Redis). ΠΠ΅ΡΡΡΠΎΠ°, Π°ΠΊΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΅ ΠΈΡΡΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠΌΠ°Π»ΠΎ ΠΎΠ΄ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎΡΠΎ ΡΠ½ΠΈΠΌΠ°ΡΠ΅, ΡΠΎΠ³Π°Ρ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈΠΎΡ ΠΏΠ΅ΡΠ°Ρ Π½Π° ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½Π°ΡΠ° ΡΠ½ΠΈΠΌΠΊΠ°. ΠΠ°ΡΠΎΠ°, Π°ΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΠ΅ Π²ΡΠ°ΡΠΈ Π½Π°Π·Π°Π΄ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, Π½ΠΎΠ²ΠΈΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΓ¨ ΡΡΡΠ΅ ΡΠ΅ Π³ΠΎ Π·Π°Π΄ΡΠΆΠΈ ΡΠ²ΠΎΡΡΡΠ²ΠΎΡΠΎ Π·Π° Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅.
ΡΠ΅ΠΊΠ²Π΅Π½ΡΠ°ΠΡΠΎΡ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° Π·Π°ΠΏΠΈΡΠΈ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π²ΠΎ ΠΈΡΡΠ° ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°. ΡΠ΅ΠΊΠ²Π΅Π½ΡΠ°ΠΡΠΎΡ ΡΠ΅ ΡΠ΅ Π·Π³ΠΎΠ»Π΅ΠΌΠΈ Π·Π° 1 Π²ΠΎ ΠΎΠ΄Π½ΠΎΡ Π½Π° ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΈΠΎΡ Π·Π°ΠΏΠΈΡ. ΠΠ°ΡΠΎΠ° ΡΡΠΎ ΡΠ΅ΠΊΠ²Π΅Π½ΡΠ°ΠΡΠΎΡ ΠΈΠΌΠ° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° ΠΎΠ΄ 64 Π±ΠΈΡΠ°, ΡΠΎΠ³Π°Ρ Π²ΠΎ ΠΏΡΠ°ΠΊΡΠ° Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π° Π½Π°ΠΈΠ΄Π΅ΡΠ΅ Π½Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° Π±ΡΠΎΡΠΎΡ Π½Π° Π·Π°ΠΏΠΈΡΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π°Ρ Π²ΠΎ ΡΠΎΠΊ ΠΎΠ΄ Π΅Π΄Π½Π° ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°.
Π€ΠΎΡΠΌΠ°ΡΠΎΡ Π½Π° ΡΠ°ΠΊΠ²ΠΈΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π° ΡΡΠ΄Π΅Π½ Π½Π° ΠΏΡΠ² ΠΏΠΎΠ³Π»Π΅Π΄. ΠΠ΅Π΄ΠΎΠ²Π΅ΡΠ»ΠΈΠ² ΡΠΈΡΠ°ΡΠ΅Π» ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΠΏΡΠ°ΡΠ° Π·ΠΎΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π΅ Π΄Π΅Π» ΠΎΠ΄ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΡ. ΠΡΠΈΡΠΈΠ½Π°ΡΠ° Π΅ ΡΡΠΎ ΡΡΡΠΈΠΌΠΎΠ²ΠΈΡΠ΅ Π½Π° Π Π΅Π΄ΠΈΡ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π°Π°Ρ ΠΏΡΠ°ΡΠ°ΡΠ° Π·Π° ΠΎΠΏΡΠ΅Π³ ΡΠΏΠΎΡΠ΅Π΄ ID. ΠΠΈΠ΄Π΅ΡΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΡ Π΅ ΠΏΠΎΠ²ΡΠ·Π°Π½ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ ΠΊΠΎΠ³Π° Π΅ ΠΊΡΠ΅ΠΈΡΠ°Π½ Π·Π°ΠΏΠΈΡΠΎΡ, ΠΎΠ²Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ±Π°ΡΠ°Π°Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΎΠΏΡΠ΅Π·ΠΈ. ΠΠ΅ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° 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 The ID specified in XADD is equal or smaller than the target stream top item
ΠΡΠΎΡ Π½Π° Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎ ΠΏΡΠ΅Π½ΠΎΡ
ΠΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ Π΄ΠΎΠ±ΠΈΠ΅ Π±ΡΠΎΡΠΎΡ Π½Π° Π·Π°ΠΏΠΈΡΠΈ Π²ΠΎ ΡΡΡΠΈΠΌ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° 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, ΠΈΡΠΏΡΡΡΠ°ΡΡΠΈ Π³ΠΎ Π΄Π΅Π»ΠΎΡ ΠΏΠΎΠ²ΡΠ·Π°Π½ ΡΠΎ ΡΠ΅ΠΊΠ²Π΅Π½ΡΠ°ΠΡΠΎΡ. ΠΡΠΏΡΡΡΠ΅Π½ΠΈΠΎΡ Π΄Π΅Π» ΠΎΠ΄ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΡ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈ Π½Π° Π½ΡΠ»Π° Π½Π° ΠΏΠΎΡΠ΅ΡΠΎΠΊΠΎΡ Π½Π° ΠΎΠΏΡΠ΅Π³ΠΎΡ ΠΈ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π°ΡΠ° ΠΌΠΎΠΆΠ½Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡ Π½Π° ΠΊΡΠ°ΡΠΎΡ ΠΎΠ΄ ΠΎΠΏΡΠ΅Π³ΠΎΡ. ΠΠΎΠ΄ΠΎΠ»Ρ Π΅ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ±Π°ΡΠ°ΡΠ΅ ΠΎΠΏΡΠ΅Π³ ΠΎΠ΄ Π΄Π²Π΅ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ.
> XRANGE mystream 1518951480106 1518951480107
1) 1) 1518951480106-0
2) 1) "sensor-id"
2) "1234"
3) "temperature"
4) "19.8"
ΠΠΌΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄Π΅Π½ Π·Π°ΠΏΠΈΡ Π²ΠΎ ΠΎΠ²ΠΎΡ ΠΎΠΏΡΠ΅Π³, Π½ΠΎ Π²ΠΎ ΡΠ΅Π°Π»Π½ΠΈΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΡΠ°ΡΠ΅Π½ΠΈΠΎΡ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΎΠ³ΡΠΎΠΌΠ΅Π½. ΠΠ΄ ΠΎΠ²Π°Π° ΠΏΡΠΈΡΠΈΠ½Π° XRANGE ΡΠ° ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΠΎΠΏΡΠΈΡΠ°ΡΠ° COUNT. Π‘ΠΎ ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ»ΠΈΡΠΈΠ½Π°ΡΠ°, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΄Π° Π³ΠΈ Π΄ΠΎΠ±ΠΈΠ΅ΠΌΠ΅ ΠΏΡΠ²ΠΈΡΠ΅ N Π·Π°ΠΏΠΈΡΠΈ. ΠΠΊΠΎ ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΈ Π΄ΠΎΠ±ΠΈΠ΅ΠΌΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ N Π·Π°ΠΏΠΈΡΠΈ (ΡΡΡΠ°Π½ΠΈΡΠ°), ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΎ ID, Π΄Π° Π³ΠΎ Π·Π³ΠΎΠ»Π΅ΠΌΠΈΠΌΠ΅ ΡΠ΅ΠΊΠ²Π΅Π½ΡΠ°ΠΡΠΎΡ ΠΏΠΎ Π΅Π΄Π΅Π½ ΠΈ ΠΏΡΠ°ΡΠ°Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ. ΠΠ° Π³ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ ΠΎΠ²Π° Π²ΠΎ ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠΎΡΠ½ΡΠ²Π°ΠΌΠ΅ Π΄Π° Π΄ΠΎΠ΄Π°Π²Π°ΠΌΠ΅ 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"
ΠΠ° Π΄Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌΠ΅ ΡΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΠ²Π°ΡΠ΅ ΡΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π΄Π²Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ, ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ ΠΈΠ·Π±Π΅ΡΠ΅ΠΌΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΎΡ ΠΏΡΠΈΠΌΠ΅Π½ ID, Ρ.Π΅. 1519073279157-0 ΠΈ Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅ΠΌΠ΅ 1 Π½Π° ΡΠ΅ΠΊΠ²Π΅Π½ΡΠ°ΠΡΠΎΡ.
ΠΠΎΠ±ΠΈΠ΅Π½ΠΈΠΎΡ ID, Π²ΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ 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 Π·Π΅ΠΌΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΎΠΏΡΠ΅Π³ ΠΏΠΎΡΠ½ΡΠ²Π°Π°Ρ ΠΈ Π·Π°ΠΏΠΈΡΠ°Π°Ρ Π²ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ ΡΠ΅Π΄ΠΎΡΠ»Π΅Π΄.
Π§ΠΈΡΠ°ΡΠ΅ Π½ΠΎΠ²ΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ 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. ΠΠ²ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡ Π΅ ΡΠ»ΠΈΡΠ΅Π½ Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎ-ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊ, ΠΊΠΎΡ ΠΏΡΠΈΠΌΠ° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ ΡΡΡΠΈΠΌ, Π½ΠΎ Π²ΡΡΡΠ½ΠΎΡΡ Π³ΠΎ ΠΎΠΏΡΠ»ΡΠΆΡΠ²Π°Π°Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈ Π²ΠΎ Π³ΡΡΠΏΠ°ΡΠ°, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΡΠΈ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΠΈ:
- Π‘Π΅ΠΊΠΎΡΠ° ΠΏΠΎΡΠ°ΠΊΠ° ΡΠ΅ Π΄ΠΎΡΡΠ°Π²ΡΠ²Π° Π΄ΠΎ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊ Π²ΠΎ Π³ΡΡΠΏΠ°ΡΠ°.
- ΠΠΎ ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π³ΡΡΠΏΠ°ΡΠ°, ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈΡΠ΅ ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°Π°Ρ ΠΏΠΎ Π½ΠΈΠ²Π½ΠΎΡΠΎ ΠΈΠΌΠ΅, ΡΡΠΎ Π΅ Π½ΠΈΠ·Π° ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π½Π° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π±ΡΠΊΠ²ΠΈ. ΠΠΊΠΎ Π½Π΅ΠΊΠΎΡ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊ ΠΏΡΠΈΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ ΡΠ΅ ΠΎΡΠΊΠ°ΠΆΠ΅ ΠΎΠ΄ Π³ΡΡΠΏΠ°ΡΠ°, ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ Π²ΡΠ°ΡΠ΅Π½ Π²ΠΎ Π³ΡΡΠΏΠ°ΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠ²ΠΎΠ΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎ ΠΈΠΌΠ΅.
- Π‘Π΅ΠΊΠΎΡΠ° Π³ΡΡΠΏΠ° Π½Π° ΠΏΠΎΡΡΠΎΡΡΠ²Π°ΡΠΈ Π³ΠΎ ΡΠ»Π΅Π΄ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΎΡ βΠΏΡΠ²Π° Π½Π΅ΠΏΡΠΎΡΠΈΡΠ°Π½Π° ΠΏΠΎΡΠ°ΠΊΠ°β. ΠΠΎΠ³Π° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊΠΎΡ Π±Π°ΡΠ° Π½ΠΎΠ²ΠΈ ΠΏΠΎΡΠ°ΠΊΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΈΠΌΠ° ΡΠ°ΠΌΠΎ ΠΏΠΎΡΠ°ΠΊΠΈ ΠΊΠΎΠΈ Π½ΠΈΠΊΠΎΠ³Π°Ρ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ Π½Π΅ Π±ΠΈΠ»Π΅ Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π΄ΠΎ Π½ΠΈΠ΅Π΄Π΅Π½ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊ Π²ΠΎ Π³ΡΡΠΏΠ°ΡΠ°.
- ΠΠΎΡΡΠΎΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ΄ΠΈ Π΄Π΅ΠΊΠ° ΠΏΠΎΡΠ°ΠΊΠ°ΡΠ° Π±ΠΈΠ»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½Π° ΠΎΠ΄ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊΠΎΡ. Π‘Π΅ Π΄ΠΎΠ΄Π΅ΠΊΠ° Π½Π΅ ΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΠ° ΠΎΠ²Π°Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π±Π°ΡΠ°Π½Π°ΡΠ° ΠΏΠΎΡΠ°ΠΊΠ° ΡΠ΅ ΠΎΡΡΠ°Π½Π΅ Π²ΠΎ ΡΡΠ°ΡΡΡΠΎΡ βΠ²ΠΎ ΡΠ΅ΠΊΠ°ΡΠ΅β.
- ΠΠΎ ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΡΡΠΏΠ°ΡΠ° Π½Π° ΠΏΠΎΡΡΠΎΡΡΠ²Π°ΡΠΈ, ΡΠ΅ΠΊΠΎΡ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ±Π°ΡΠ° ΠΈΡΡΠΎΡΠΈΡΠ° Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈ ΠΊΠΎΠΈ ΠΌΡ Π±ΠΈΠ»Π΅ Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ, Π½ΠΎ ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ (Π²ΠΎ ΡΡΠ°ΡΡΡΠΎΡ βΠ²ΠΎ ΡΠ΅ΠΊΠ°ΡΠ΅β)
ΠΠΎ ΠΈΠ·Π²Π΅ΡΠ½Π° ΡΠΌΠΈΡΠ»Π°, ΡΠΎΡΡΠΎΡΠ±Π°ΡΠ° Π½Π° Π³ΡΡΠΏΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΡΠ°Π·ΠΈ Π½Π° ΡΠ»Π΅Π΄Π½ΠΈΠΎΠ² Π½Π°ΡΠΈΠ½:
+----------------------------------------+
| consumer_group_name: mygroup
| consumer_group_stream: somekey
| last_delivered_id: 1292309234234-92
|
| consumers:
| "consumer-1" with pending messages
| 1292309234234-4
| 1292309234232-8
| "consumer-42" with pending messages
| ... (and so forth)
+----------------------------------------+
Π‘Π΅Π³Π° Π΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΡΠ΅ ΡΠΎ Π³Π»Π°Π²Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΡΡΠΏΠ°ΡΠ° Π½Π° ΠΏΠΎΡΡΠΎΡΡΠ²Π°ΡΠΈ, ΠΈΠΌΠ΅Π½ΠΎ:
- XGROUP ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅, ΡΠ½ΠΈΡΡΡΠ²Π°ΡΠ΅ ΠΈ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ Π³ΡΡΠΏΠΈ
- XREADGROUP ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΡΠΎΠΊ Π½ΠΈΠ· Π³ΡΡΠΏΠ°
- XACK - ΠΎΠ²Π°Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΡ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π½Π° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊΠΎΡ Π΄Π° ΡΠ° ΠΎΠ·Π½Π°ΡΠΈ ΠΏΠΎΡΠ°ΠΊΠ°ΡΠ° ΠΊΠ°ΠΊΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½Π°
Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ Π½Π° Π³ΡΡΠΏΠ° Π½Π° ΠΏΠΎΡΡΠΎΡΡΠ²Π°ΡΠΈ
ΠΠ° ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠ΅ Π΄Π΅ΠΊΠ° mystream Π²Π΅ΡΠ΅ ΠΏΠΎΡΡΠΎΠΈ. Π’ΠΎΠ³Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π·Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ Π³ΡΡΠΏΠ° ΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:
> XGROUP CREATE mystream mygroup $
OK
ΠΠΎΠ³Π° ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠ΅ Π³ΡΡΠΏΠ°, ΠΌΠΎΡΠ° Π΄Π° ΠΏΠΎΠΌΠΈΠ½Π΅ΠΌΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΎΠ΄ ΠΊΠΎΡ Π³ΡΡΠΏΠ°ΡΠ° ΡΠ΅ ΠΏΡΠΈΠΌΠ° ΠΏΠΎΡΠ°ΠΊΠΈ. ΠΠΊΠΎ ΡΠ°ΠΊΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΄Π° Π³ΠΈ ΠΏΡΠΈΠΌΠ°ΠΌΠ΅ ΡΠΈΡΠ΅ Π½ΠΎΠ²ΠΈ ΠΏΠΎΡΠ°ΠΊΠΈ, ΡΠΎΠ³Π°Ρ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΡΠΏΠ΅ΡΠΈΡΠ°Π»Π½ΠΈΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ $ (ΠΊΠ°ΠΊΠΎ Π²ΠΎ Π½Π°ΡΠΈΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠ³ΠΎΡΠ΅). ΠΠΊΠΎ Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ 0 Π½Π°ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΡΠ΅Π±Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΡΠΎΠ³Π°Ρ ΡΠΈΡΠ΅ ΠΏΠΎΡΠ°ΠΊΠΈ Π²ΠΎ Π½ΠΈΠ·Π°ΡΠ° ΡΠ΅ Π±ΠΈΠ΄Π°Ρ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ Π·Π° Π³ΡΡΠΏΠ°ΡΠ°.
Π‘Π΅Π³Π° ΠΊΠΎΠ³Π° Π³ΡΡΠΏΠ°ΡΠ° Π΅ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½Π°, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π²Π΅Π΄Π½Π°Ρ Π΄Π° ΠΏΠΎΡΠ½Π΅ΠΌΠ΅ Π΄Π° ΡΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎΡΠ°ΠΊΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XREADGROUP. ΠΠ²Π°Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ»ΠΈΡΠ½Π° Π½Π° XREAD ΠΈ ΡΠ° ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΠΎΠΏΡΠΈΠΎΠ½Π°Π»Π½Π°ΡΠ° ΠΎΠΏΡΠΈΡΠ° BLOCK. Π‘Π΅ΠΏΠ°ΠΊ, ΠΏΠΎΡΡΠΎΠΈ ΠΏΠΎΡΡΠ΅Π±Π½Π° ΠΎΠΏΡΠΈΡΠ° ΠΠ Π£ΠΠ ΠΊΠΎΡΠ° ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΠΌΠΎΡΠ° Π΄Π° Π±ΠΈΠ΄Π΅ Π½Π°Π²Π΅Π΄Π΅Π½Π° ΡΠΎ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ: ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π³ΡΡΠΏΠ°ΡΠ° ΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊΠΎΡ. ΠΠΎΠ΄Π΄ΡΠΆΠ°Π½Π° Π΅ ΠΈ ΠΎΠΏΡΠΈΡΠ°ΡΠ° 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 ΡΠ΅ Π²ΠΈ Π²ΡΠ°ΡΠΈ ΠΈΡΡΠΎΡΠΈΡΠ° Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈ ΡΠΎ ΡΡΠ°ΡΡΡ Π½Π° βΠ²ΠΎ ΡΠ΅ΠΊΠ°ΡΠ΅β ΠΊΠΎΠΈ Π±ΠΈΠ»Π΅ Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π΄ΠΎ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΎΡ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊ (ΠΠ»ΠΈΡΠ°), Π½ΠΎ ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ΄Π΅Π½ΠΈ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XACK.
ΠΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ ΡΠ΅ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΎΠ²Π° ΠΎΠ΄Π½Π΅ΡΡΠ²Π°ΡΠ΅ ΡΠΎ Π²Π΅Π΄Π½Π°Ρ Π½Π°Π²Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ID 0, Π±Π΅Π· ΠΎΠΏΡΠΈΡΠ° COUNT. ΠΠ΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌΠ΅ Π΅Π΄Π½Π° ΠΏΠΎΡΠ°ΠΊΠ° Π²ΠΎ ΠΎΡΠ΅ΠΊΡΠ²Π°ΡΠ΅, ΠΎΠ΄Π½ΠΎΡΠ½ΠΎ ΠΏΠΎΡΠ°ΠΊΠ°ΡΠ° Π½Π° Apple:
> 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) (empty list or set)
Π‘Π΅Π³Π° Π΅ Π½Π° ΡΠ΅Π΄ ΠΠΎΠ± Π΄Π° ΠΏΡΠΎΡΠΈΡΠ° Π½Π΅ΡΡΠΎ:
> 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, ΠΏΠΎΠ±Π°ΡΠ° Π½Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ Π΄Π²Π΅ ΠΏΠΎΡΠ°ΠΊΠΈ. ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΠΈΠ·Π²Π΅ΡΡΡΠ²Π° ΡΠ°ΠΌΠΎ Π·Π° Π½Π΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΏΠΎΡΠ°ΠΊΠΈ ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠΏΠ΅ΡΠΈΡΠ°Π»Π½ΠΈΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ β>β. ΠΠ°ΠΊΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΏΠΎΡΠ°ΠΊΠ°ΡΠ° βΡΠ°Π±ΠΎΠ»ΠΊΠΎβ Π½Π΅ΠΌΠ° Π΄Π° ΡΠ΅ ΠΏΡΠΈΠΊΠ°ΠΆΠ΅ Π±ΠΈΠ΄Π΅ΡΡΠΈ Π²Π΅ΡΠ΅ Π΅ Π΄ΠΎΡΡΠ°Π²Π΅Π½Π° Π΄ΠΎ ΠΠ»ΠΈΡΠ°, ΠΏΠ° ΠΠΎΠ± Π΄ΠΎΠ±ΠΈΠ²Π° βΠΏΠΎΡΡΠΎΠΊΠ°Π»β ΠΈ βΡΠ°Π³ΠΎΠ΄Π°β.
ΠΠ° ΠΎΠ²ΠΎΡ Π½Π°ΡΠΈΠ½, ΠΠ»ΠΈΡ, ΠΠΎΠ± ΠΈ ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ Π΄ΡΡΠ³ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊ Π½Π° Π³ΡΡΠΏΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠΈΡΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΡΠ°ΠΊΠΈ ΠΎΠ΄ ΠΈΡΡΠΈΠΎΡ ΠΏΠΎΡΠΎΠΊ. Π’ΠΈΠ΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ° ΡΠΈΡΠ°Π°Ρ Π½ΠΈΠ²Π½Π°ΡΠ° ΠΈΡΡΠΎΡΠΈΡΠ° Π½Π° Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ ΠΏΠΎΡΠ°ΠΊΠΈ ΠΈΠ»ΠΈ Π΄Π° ΠΎΠ·Π½Π°ΡΠ°Ρ ΠΏΠΎΡΠ°ΠΊΠΈ ΠΊΠ°ΠΊΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ.
ΠΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΠ°Π±ΠΎΡΠΈ ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΈ ΠΈΠΌΠ°ΡΠ΅ Π½Π° ΡΠΌ:
- Π¨ΡΠΎΠΌ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊΠΎΡ ΡΠΌΠ΅ΡΠ° Π΄Π΅ΠΊΠ° ΠΏΠΎΡΠ°ΠΊΠ°ΡΠ° Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° XREADGROUP, ΠΎΠ²Π°Π° ΠΏΠΎΡΠ°ΠΊΠ° ΠΎΠ΄ΠΈ Π²ΠΎ ΡΠΎΡΡΠΎΡΠ±Π° βΠ²ΠΎ ΡΠ΅ΠΊΠ°ΡΠ΅β ΠΈ Π΅ Π΄ΠΎΠ΄Π΅Π»Π΅Π½Π° Π½Π° ΡΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅Π½ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊ. ΠΡΡΠ³ΠΈΡΠ΅ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈ Π½Π° Π³ΡΡΠΏΠ°ΡΠ° Π½Π΅ΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ° ΡΠΈΡΠ°Π°Ρ ΠΎΠ²Π°Π° ΠΏΠΎΡΠ°ΠΊΠ°.
- ΠΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π°Ρ ΠΏΡΠΈ ΠΏΡΠ²ΠΎΡΠΎ ΡΠΏΠΎΠΌΠ½ΡΠ²Π°ΡΠ΅, Π½Π΅ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±Π° Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π°Ρ.
- Π‘ΠΎ XREADGROUP ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΡΠ°ΠΊΠΈ ΠΎΠ΄ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½ΠΈΡΠΊΠΈ Π²ΠΎ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅, Π½ΠΎ Π·Π° Π΄Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°, ΠΏΡΠ²ΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π³ΡΡΠΏΠΈ ΡΠΎ ΠΈΡΡΠΎ ΠΈΠΌΠ΅ Π·Π° ΡΠ΅ΠΊΠΎΡΠ° Π½ΠΈΡΠΊΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ XGROUP
ΠΠ±Π½ΠΎΠ²Π° Π½Π° Π½Π΅ΡΡΠΏΠ΅Ρ
ΠΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠΏΠΎΡΠ°Π²ΠΈ ΠΎΠ΄ Π½Π΅ΡΡΠΏΠ΅Ρ
ΠΎΡ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π° ΡΠ° ΠΏΡΠΎΡΠΈΡΠ° ΡΠ²ΠΎΡΠ°ΡΠ° Π»ΠΈΡΡΠ° Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈ ΡΠΎ ΡΡΠ°ΡΡΡ βΠ²ΠΎ ΡΠ΅ΠΊΠ°ΡΠ΅β. ΠΠ΅ΡΡΡΠΎΠ°, Π²ΠΎ ΡΠ΅Π°Π»Π½ΠΈΠΎΡ ΡΠ²Π΅Ρ, ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈΡΠ΅ Π½Π° ΠΊΡΠ°ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΎΠΏΠ°Π΄Π½Π°Ρ. Π¨ΡΠΎ ΡΠ΅ ΡΠ»ΡΡΡΠ²Π° ΡΠΎ Π·Π°Π³Π»Π°Π²Π΅Π½ΠΈΡΠ΅ ΠΏΠΎΡΠ°ΠΊΠΈ Π½Π° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊΠΎΡ Π°ΠΊΠΎ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊΠΎΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠΏΠΎΡΠ°Π²ΠΈ ΠΎΠ΄ Π΄Π΅ΡΠ΅ΠΊΡ?
Consumer Group Π½ΡΠ΄ΠΈ ΡΡΠ½ΠΊΡΠΈΡΠ° ΠΊΠΎΡΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠΎΠΊΠΌΡ Π·Π° ΡΠ°ΠΊΠ²ΠΈ ΡΠ»ΡΡΠ°ΠΈ - ΠΊΠΎΠ³Π° ΡΡΠ΅Π±Π° Π΄Π° Π³ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈΠΊΠΎΡ Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈΡΠ΅.
ΠΡΠ²ΠΎΡΠΎ Π½Π΅ΡΡΠΎ ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π΅ Π΄Π° ΡΠ° ΠΏΠΎΠ²ΠΈΠΊΠ°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π’ΠΠΠΠ’, ΠΊΠΎΡ Π³ΠΈ ΠΏΡΠΈΠΊΠ°ΠΆΡΠ²Π° ΡΠΈΡΠ΅ ΠΏΠΎΡΠ°ΠΊΠΈ Π²ΠΎ Π³ΡΡΠΏΠ°ΡΠ° ΡΠΎ ΡΡΠ°ΡΡΡ βΠ²ΠΎ ΡΠ΅ΠΊΠ°ΡΠ΅β. ΠΠΎ ΡΠ²ΠΎΡΠ°ΡΠ° Π½Π°ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° ΡΠΎΡΠΌΠ°, ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π° ΡΠ°ΠΌΠΎ ΡΠΎ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ: ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π½ΠΈΡΠΊΠ°ΡΠ° ΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π³ΡΡΠΏΠ°ΡΠ°:
> XPENDING mystream mygroup
1) (integer) 2
2) 1526569498055-0
3) 1526569506935-0
4) 1) 1) "Bob"
2) "2"
Π’ΠΈΠΌΠΎΡ Π³ΠΎ ΠΏΡΠΈΠΊΠ°ΠΆΠ° Π±ΡΠΎΡΠΎΡ Π½Π° Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ ΠΏΠΎΡΠ°ΠΊΠΈ Π·Π° ΡΠ΅Π»Π°ΡΠ° Π³ΡΡΠΏΠ° ΠΈ Π·Π° ΡΠ΅ΠΊΠΎΡ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊ. ΠΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΎ ΠΠΎΠ± ΡΠΎ Π΄Π²Π΅ ΠΈΠ·Π²ΠΎΠ½ΡΠ΅Π΄Π½ΠΈ ΠΏΠΎΡΠ°ΠΊΠΈ Π±ΠΈΠ΄Π΅ΡΡΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° ΠΏΠΎΡΠ°ΠΊΠ° ΡΡΠΎ ΡΠ° ΠΏΠΎΠ±Π°ΡΠ° ΠΠ»ΠΈΡ Π±Π΅ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ΄Π΅Π½Π° XACK.
ΠΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ±Π°ΡΠ°ΠΌΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ:
XPENDING {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
Π‘Π΅Π³Π° ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ Π·Π° ΡΠ΅ΠΊΠΎΡΠ° ΠΏΠΎΡΠ°ΠΊΠ°: ID, ΠΈΠΌΠ΅ Π½Π° ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΠΊ, Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΌΠΈΡΡΠ²Π°ΡΠ΅ Π²ΠΎ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ Π±ΡΠΎΡ Π½Π° ΠΎΠ±ΠΈΠ΄ΠΈ Π·Π° ΠΈΡΠΏΠΎΡΠ°ΠΊΠ°. ΠΠΌΠ°ΠΌΠ΅ Π΄Π²Π΅ ΠΏΠΎΡΠ°ΠΊΠΈ ΠΎΠ΄ ΠΠΎΠ± ΠΈ ΡΠΈΠ΅ ΡΠ΅ Π½Π΅Π°ΠΊΡΠΈΠ²Π΅Π½ 74170458 ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ, ΠΎΠΊΠΎΠ»Ρ 20 ΡΠ°ΡΠ°.
ΠΠ΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ ΠΈΠΌΠ°ΡΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΊΠ° Π½ΠΈΠΊΠΎΡ Π½Π΅ Π½Γ¨ ΡΠΏΡΠ΅ΡΡΠ²Π° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌΠ΅ ΠΊΠ°ΠΊΠ²Π° Π΅ ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°ΡΠ° Π½Π° ΠΏΠΎΡΠ°ΠΊΠ°ΡΠ° Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ XRANGE.
> XRANGE mystream 1526569498055-0 1526569498055-0
1) 1) 1526569498055-0
2) 1) "message"
2) "orange"
Π’ΡΠ΅Π±Π° ΡΠ°ΠΌΠΎ Π΄Π²Π°ΠΏΠ°ΡΠΈ Π΄Π° Π³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠΈΠΌΠ΅ ΠΈΡΡΠΈΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅. Π‘Π΅Π³Π° ΠΊΠΎΠ³Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΈΠ΄Π΅ΡΠ°, ΠΠ»ΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ΄Π»ΡΡΠΈ Π΄Π΅ΠΊΠ° ΠΏΠΎ 20 ΡΠ°ΡΠ° ΠΏΠ°ΡΠ·Π°, ΠΠΎΠ± Π²Π΅ΡΠΎΡΠ°ΡΠ½ΠΎ Π½Π΅ΠΌΠ° Π΄Π° ΡΠ΅ ΠΎΠΏΠΎΡΠ°Π²ΠΈ, ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π΅ Π΄Π° Π³ΠΈ ΠΏΠΎΠ±Π°ΡΠ° ΡΠΈΠ΅ ΠΏΠΎΡΠ°ΠΊΠΈ ΠΈ Π΄Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈ Π΄Π° Π³ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π° Π·Π° ΠΠΎΠ±. ΠΠ° ΠΎΠ²Π° ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΠΠ ΠΠ’Π‘Π’ΠΠΠ£ΠΠΠΠ:
XCLAIM {key} {group} {consumer} {min-idle-time} {ID-1} {ID-2} ... {ID-N}
ΠΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠ° ΠΎΠ²Π°Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ΠΌΠ΅ βΡΡΡΠ°Π½ΡΠΊΠ°β ΠΏΠΎΡΠ°ΠΊΠ° ΡΡΠΎ ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½Π° ΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π° Π½Π° ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈΠΊΠΎΡ Π²ΠΎ {consumer}. Π‘Π΅ΠΏΠ°ΠΊ, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈΠΌΠ΅ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΌΠΈΡΡΠ²Π°ΡΠ΅ {min-idle-time}. ΠΠ²Π° ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ ΡΠΈΡΡΠ°ΡΠΈΡΠ° ΠΊΠΎΠ³Π° Π΄Π²Π°ΡΡΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π°Π°Ρ ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ Π΄Π° Π³ΠΎ ΡΠΌΠ΅Π½Π°Ρ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈΠΊΠΎΡ Π½Π° ΠΈΡΡΠΈΡΠ΅ ΠΏΠΎΡΠ°ΠΊΠΈ:
Client 1: XCLAIM mystream mygroup Alice 3600000 1526569498055-0
Clinet 2: XCLAIM mystream mygroup Lora 3600000 1526569498055-0
ΠΡΠ²ΠΈΠΎΡ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ΅ Π³ΠΎ ΡΠ΅ΡΠ΅ΡΠΈΡΠ° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° Π·Π°ΡΡΠΎΡ ΠΈ ΡΠ΅ Π³ΠΎ Π·Π³ΠΎΠ»Π΅ΠΌΠΈ Π±ΡΠΎΡΠ°ΡΠΎΡ Π·Π° ΠΈΡΠΏΠΎΡΠ°ΠΊΠ°. Π’Π°ΠΊΠ°, Π²ΡΠΎΡΠΈΠΎΡ ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π΅ΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΠΏΠΎΠ±Π°ΡΠ°.
> XCLAIM mystream mygroup Alice 3600000 1526569498055-0
1) 1) 1526569498055-0
2) 1) "message"
2) "orange"
ΠΠΎΡΠ°ΠΊΠ°ΡΠ° Π±Π΅ΡΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΠΎΠ΄Π½Π΅ΡΠ΅Π½Π° ΠΎΠ΄ ΠΠ»ΠΈΡ, ΠΊΠΎΡΠ° ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎΡΠ°ΠΊΠ°ΡΠ° ΠΈ Π΄Π° ΡΠ° ΠΏΠΎΡΠ²ΡΠ΄ΠΈ.
ΠΠ΄ Π³ΠΎΡΠ½ΠΈΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π΄Π΅ΠΊΠ° ΡΡΠΏΠ΅ΡΠ½ΠΎΡΠΎ Π±Π°ΡΠ°ΡΠ΅ ΡΠ° Π²ΡΠ°ΡΠ° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°ΡΠ° Π½Π° ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠΎΡΠ°ΠΊΠ°. Π‘Π΅ΠΏΠ°ΠΊ, ΠΎΠ²Π° Π½Π΅ Π΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ. ΠΠΏΡΠΈΡΠ°ΡΠ° JUSTID ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ°ΠΌΠΎ Π·Π° Π²ΡΠ°ΡΠ°ΡΠ΅ Π½Π° ΠΠ Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈ. ΠΠ²Π° Π΅ ΠΊΠΎΡΠΈΡΠ½ΠΎ Π°ΠΊΠΎ Π½Π΅ ΡΡΠ΅ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π½ΠΈ Π·Π° Π΄Π΅ΡΠ°Π»ΠΈΡΠ΅ Π½Π° ΠΏΠΎΡΠ°ΠΊΠ°ΡΠ° ΠΈ ΡΠ°ΠΊΠ°ΡΠ΅ Π΄Π° Π³ΠΈ Π·Π³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ.
ΠΡΠΎΡΠ°Ρ Π·Π° ΠΈΡΠΏΠΎΡΠ°ΠΊΠ°
ΠΡΠΎΡΠ°ΡΠΎΡ ΡΡΠΎ Π³ΠΎ Π³Π»Π΅Π΄Π°ΡΠ΅ Π½Π° ΠΈΠ·Π»Π΅Π·ΠΎΡ Π’ΠΠΠΠ’ Π΅ Π±ΡΠΎΡΠΎΡ Π½Π° ΠΈΡΠΏΠΎΡΠ°ΠΊΠΈ Π½Π° ΡΠ΅ΠΊΠΎΡΠ° ΠΏΠΎΡΠ°ΠΊΠ°. Π’Π°ΠΊΠ²ΠΈΠΎΡ Π±ΡΠΎΡΠ°Ρ ΡΠ΅ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π° Π½Π° Π΄Π²Π° Π½Π°ΡΠΈΠ½Π°: ΠΊΠΎΠ³Π° ΠΏΠΎΡΠ°ΠΊΠ°ΡΠ° Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΠΎΠ±Π°ΡΠ°Π½Π° ΠΏΡΠ΅ΠΊΡ ΠΠ ΠΠ’Π‘Π’ΠΠΠ£ΠΠΠΠ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΠΎΠ²ΠΈΠΊ 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) name
2) "mygroup"
3) consumers
4) (integer) 2
5) pending
6) (integer) 2
2) 1) name
2) "some-other-group"
3) consumers
4) (integer) 1
5) pending
6) (integer) 0
ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΠΏΠΎΠ³ΠΎΡΠ΅ ΠΏΡΠΈΠΊΠ°ΠΆΡΠ²Π° ΠΎΠΏΡΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° ΡΠΈΡΠ΅ Π³ΡΡΠΏΠΈ ΠΎΠ΄ Π½Π°Π²Π΅Π΄Π΅Π½Π°ΡΠ° Π½ΠΈΡΠΊΠ°
> XINFO CONSUMERS mystream mygroup
1) 1) name
2) "Alice"
3) pending
4) (integer) 1
5) idle
6) (integer) 9104628
2) 1) name
2) "Bob"
3) pending
4) (integer) 1
5) idle
6) (integer) 83841983
ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΠΏΠΎΠ³ΠΎΡΠ΅ ΠΏΡΠΈΠΊΠ°ΠΆΡΠ²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° ΡΠΈΡΠ΅ ΠΏΡΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΈΡΠΈ Π½Π° Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΎΡ ΠΏΡΠ΅Π½ΠΎΡ ΠΈ Π³ΡΡΠΏΠ°.
ΠΠΊΠΎ ΡΠ° Π·Π°Π±ΠΎΡΠ°Π²ΠΈΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°, ΡΠ°ΠΌΠΎ ΠΏΠΎΠ±Π°ΡΠ°ΡΡΠ΅ ΠΏΠΎΠΌΠΎΡ ΠΎΠ΄ ΡΠ°ΠΌΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
> XINFO HELP
1) XINFO {subcommand} arg arg ... arg. Subcommands are:
2) CONSUMERS {key} {groupname} -- Show consumer groups of group {groupname}.
3) GROUPS {key} -- Show the stream consumer groups.
4) STREAM {key} -- Show information about the stream.
5) HELP -- Print this help.
ΠΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°ΡΠ° Π½Π° ΠΏΡΠ΅Π½ΠΎΡΠΎΡ
ΠΠ½ΠΎΠ³Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π½Π΅ ΡΠ°ΠΊΠ°Π°Ρ Π·Π°ΡΠ΅ΠΊΠΎΠ³Π°Ρ Π΄Π° ΡΠΎΠ±ΠΈΡΠ°Π°Ρ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ ΠΏΡΠ΅Π½ΠΎΡ. Π§Π΅ΡΡΠΎ Π΅ ΠΊΠΎΡΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠΌΠ° Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π΅Π½ Π±ΡΠΎΡ ΠΏΠΎΡΠ°ΠΊΠΈ ΠΏΠΎ Π½ΠΈΡΠΊΠ°. ΠΠΎ Π΄ΡΡΠ³ΠΈ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΡΠΈΡΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ°Ρ ΡΠΈΡΠ΅ ΠΏΠΎΡΠ°ΠΊΠΈ ΠΎΠ΄ Π½ΠΈΡΠΊΠ° Π²ΠΎ Π΄ΡΡΠ³Π° ΠΏΠΎΡΡΠΎΡΠ°Π½Π° ΠΏΡΠΎΠ΄Π°Π²Π½ΠΈΡΠ° ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ΅ Π΄ΠΎΡΡΠΈΠ³Π½Π΅ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π°ΡΠ° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π° Π½Π° Π½ΠΈΡΠΊΠ°ΡΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°ΡΠ° Π½Π° ΠΏΠΎΡΠΎΠΊΠΎΡ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°ΡΠΎΡ MAXLEN Π²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XADD:
> XADD mystream MAXLEN 2 * value 1
1526654998691-0
> XADD mystream MAXLEN 2 * value 2
1526654999635-0
> XADD mystream MAXLEN 2 * value 3
1526655000369-0
> XLEN mystream
(integer) 2
> XRANGE mystream - +
1) 1) 1526654999635-0
2) 1) "value"
2) "2"
2) 1) 1526655000369-0
2) 1) "value"
2) "3"
ΠΠΎΠ³Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ MAXLEN, ΡΡΠ°ΡΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΡΠ΅ Π±ΡΠΈΡΠ°Ρ ΠΊΠΎΠ³Π° ΡΠ΅ Π΄ΠΎΡΡΠΈΠ³Π½Π°Ρ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° Π΄ΠΎΠ»ΠΆΠΈΠ½Π°, ΡΠ°ΠΊΠ° ΡΡΠΎ ΠΏΡΠ΅Π½ΠΎΡΠΎΡ ΠΈΠΌΠ° ΠΏΠΎΡΡΠΎΡΠ°Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°. Π‘Π΅ΠΏΠ°ΠΊ, ΠΊΠ°ΡΡΡΠ΅ΡΠ΅ΡΠΎ Π²ΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ Π½Π΅ ΡΠ΅ ΡΠ»ΡΡΡΠ²Π° Π½Π° Π½Π°ΡΠ΅ΡΠΈΠΊΠ°ΡΠ΅Π½ Π½Π°ΡΠΈΠ½ Π²ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° Π½Π° Redis. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΡΠ»Π΅Π΄Π½ΠΈΠΎΠ² Π½Π°ΡΠΈΠ½:
XADD mystream MAXLEN ~ 1000 * ... entry fields here ...
ΠΡΠ³ΡΠΌΠ΅Π½ΡΠΎΡ ~ Π²ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΡ ΠΏΠΎΠ³ΠΎΡΠ΅ Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° Π½Π΅ ΠΌΠΎΡΠ° Π½ΡΠΆΠ½ΠΎ Π΄Π° ΡΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠΌΠ΅ Π΄ΠΎΠ»ΠΆΠΈΠ½Π°ΡΠ° Π½Π° ΠΏΡΠ΅Π½ΠΎΡΠΎΡ Π½Π° ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡ. ΠΠΎ Π½Π°ΡΠΈΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ Π±ΡΠΎΡ ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌ ΠΈΠ»ΠΈ Π΅Π΄Π½Π°ΠΊΠΎΠ² Π½Π° 1000 (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, 1000, 1010 ΠΈΠ»ΠΈ 1030). Π‘Π°ΠΌΠΎ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π½Π°Π²Π΅Π΄ΠΎΠ²ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΡΠ°ΠΊΠ°ΠΌΠ΅ Π½Π°ΡΠΈΠΎΡ ΠΏΡΠ΅Π½ΠΎΡ Π΄Π° ΡΠΊΠ»Π°Π΄ΠΈΡΠ° Π½Π°ΡΠΌΠ°Π»ΠΊΡ 1000 Π·Π°ΠΏΠΈΡΠΈ. ΠΠ²Π° Π³ΠΎ ΠΏΡΠ°Π²ΠΈ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ ΡΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ° ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠ΅ΡΠΈΠΊΠ°ΡΠ½ΠΎ Π²ΠΎ Redis.
ΠΠΌΠ° ΠΈ ΠΏΠΎΡΠ΅Π±Π΅Π½ ΡΠΈΠΌ XTRIM, ΠΊΠΎΡ Π³ΠΎ ΠΏΡΠ°Π²ΠΈ ΠΈΡΡΠΎΡΠΎ:
> XTRIM mystream MAXLEN 10
> XTRIM mystream MAXLEN ~ 10
ΠΠΎΡΡΠΎΡΠ°Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°
Redis Stream Π°ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΎ ΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠ° Π½Π° slave ΡΠ°Π·Π»ΠΈ ΠΈ ΡΠ΅ Π·Π°ΡΡΠ²ΡΠ²Π° Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΊΠ°ΠΊΠΎ AOF (ΡΠ»ΠΈΠΊΠ° ΠΎΠ΄ ΡΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ) ΠΈ RDB (Π΄Π½Π΅Π²Π½ΠΈΠΊ Π½Π° ΡΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΠ΅). ΠΠΎΠ΄Π΄ΡΠΆΠ°Π½Π° Π΅ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° ΡΠΎΡΡΠΎΡΠ±Π°ΡΠ° Π½Π° ΠΡΡΠΏΠΈΡΠ΅ Π½Π° ΠΏΠΎΡΡΠΎΡΡΠ²Π°ΡΠΈ. ΠΠ°ΡΠΎΠ°, Π°ΠΊΠΎ ΠΏΠΎΡΠ°ΠΊΠ°ΡΠ° Π΅ Π²ΠΎ ΡΡΠ°ΡΡΡ βΠ²ΠΎ ΡΠ΅ΠΊΠ°ΡΠ΅β Π½Π° Π³Π»Π°Π²Π½ΠΈΠΎΡ ΡΠ°Π·ΠΎΠ», ΡΠΎΠ³Π°Ρ Π½Π° 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 Π΅ ΠΈΠ΄Π΅Π°Π»Π΅Π½ Π·Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΡΠΈ Π·Π° ΠΏΠΎΡΠ°ΠΊΠΈ, ΡΠ΅Π΄ΠΈΡΠΈ Π·Π° ΠΏΠΎΡΠ°ΠΊΠΈ, ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½ΠΎ Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°ΡΠ΅ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ Π·Π° ΡΡΠ²Π°ΡΠ΅ ΠΈΡΡΠΎΡΠΈΡΠ°.
ΠΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΠΊΠΎΠ² Π΅Π΄Π½Π°Ρ
ΠΠ·Π²ΠΎΡ: www.habr.com