Redis Stream Π΅ Π½ΠΎΠ² Π°Π±ΡΡΡΠ°ΠΊΡΠ΅Π½ ΡΠΈΠΏ Π΄Π°Π½Π½ΠΈ, Π²ΡΠ²Π΅Π΄Π΅Π½ Π² Redis Ρ Π²Π΅ΡΡΠΈΡ 5.0
ΠΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»Π½ΠΎ Redis Stream Π΅ ΡΠΏΠΈΡΡΠΊ, ΠΊΡΠΌ ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ. ΠΡΠ΅ΠΊΠΈ Π·Π°ΠΏΠΈΡ ΠΈΠΌΠ° ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡΡ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΈ Π²ΠΊΠ»ΡΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅Π²ΠΎ ΠΊΠ»Π΅ΠΉΠΌΠΎ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ ΠΎΡ Π·Π°ΠΏΠΈΡΠΈ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ ΠΈΠ»ΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ Π½ΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠΈΡΡΠΈΠ³Π½Π°Ρ Π² ΠΏΠΎΡΠΎΠΊΠ°, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° "tail -f" Π½Π° Unix, ΠΊΠΎΡΡΠΎ ΡΠ΅ΡΠ΅ Π»ΠΎΠ³ ΡΠ°ΠΉΠ» ΠΈ Π·Π°ΠΌΡΡΠ·Π²Π°, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ°ΠΊΠ° Π½ΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ»ΡΡΠ°Ρ Π½ΠΈΡΠΊΠ° Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΡΠΎΡΠ½ΠΎ ΠΊΠ°ΠΊΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΠΈ "tail -f" ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ΡΠ°Ρ ΡΠ°ΠΉΠ» Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, Π±Π΅Π· Π΄Π° ΡΠ° Π² ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ.
ΠΠ° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π° Π½Π° Π½ΠΎΠ²ΠΈΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΠΈ, Π½Π΅ΠΊΠ° Ρ
Π²ΡΡΠ»ΠΈΠΌ Π΅Π΄ΠΈΠ½ Π±ΡΡΠ· ΠΏΠΎΠ³Π»Π΅Π΄ ΠΊΡΠΌ ΠΎΡΠ΄Π°Π²Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ Redis ΡΡΡΡΠΊΡΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ°ΡΡΠΈΡΠ½ΠΎ Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° Redis Stream.
Redis PUB/SUB
Redis Pub/Sub Π΅ ΠΏΡΠΎΡΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΡΠΎ Π²Π΅ΡΠ΅ Π΅ Π²Π³ΡΠ°Π΄Π΅Π½Π° Π²ΡΠ² Π²Π°ΡΠ΅ΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π·Π° ΠΊΠ»ΡΡ-ΡΡΠΎΠΉΠ½ΠΎΡΡ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΏΡΠΎΡΡΠΎΡΠ°ΡΠ° ΡΠΈ ΠΈΠΌΠ° ΡΠ΅Π½Π°:
- ΠΠΊΠΎ ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΡΠΈΡΠΈΠ½Π° ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΠΈ, ΡΠΎΠΉ Π³ΡΠ±ΠΈ Π²ΡΠΈΡΠΊΠΈΡΠ΅ ΡΠΈ Π°Π±ΠΎΠ½Π°ΡΠΈ
- ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π½Π°Π΅ ΡΠΎΡΠ½ΠΈΡ Π°Π΄ΡΠ΅Ρ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ²ΠΎΠΈ Π°Π±ΠΎΠ½Π°ΡΠΈ
- ΠΠ·Π΄Π°ΡΠ΅Π»ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅ΡΠΎΠ²Π°ΡΠΈ ΡΠ²ΠΎΠΈΡΠ΅ Π°Π±ΠΎΠ½Π°ΡΠΈ Ρ ΡΠ°Π±ΠΎΡΠ°, Π°ΠΊΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ
- Π‘ΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΈΠ·ΡΡΠΈΠ²Π° ΠΎΡ Π±ΡΡΠ΅ΡΠ° Π½Π° ΠΈΠ·Π΄Π°ΡΠ΅Π»Ρ Π²Π΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ΡΠΎ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ²Π° Π΄ΠΎ ΠΊΠΎΠ»ΠΊΠΎ Π°Π±ΠΎΠ½Π°ΡΠΈ Π΅ Π±ΠΈΠ»ΠΎ Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΎ ΠΈ ΠΊΠΎΠ»ΠΊΠΎ Π±ΡΡΠ·ΠΎ ΡΠ° ΡΡΠΏΠ΅Π»ΠΈ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΡ ΡΠΎΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
- ΠΡΠΈΡΠΊΠΈ Π°Π±ΠΎΠ½Π°ΡΠΈ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. Π‘Π°ΠΌΠΈΡΠ΅ Π°Π±ΠΎΠ½Π°ΡΠΈ ΡΡΡΠ±Π²Π° ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΡΡ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ Π·Π° ΡΠ΅Π΄Π° Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΅Π΄Π½ΠΎ ΠΈ ΡΡΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
- ΠΡΠΌΠ° Π²Π³ΡΠ°Π΄Π΅Π½ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ, ΠΊΠΎΠΉΡΠΎ Π΄Π° ΠΏΠΎΡΠ²ΡΡΠ΄ΠΈ, ΡΠ΅ Π΄Π°Π΄Π΅Π½ Π°Π±ΠΎΠ½Π°Ρ Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΈΠ» ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. ΠΠΊΠΎ Π°Π±ΠΎΠ½Π°Ρ ΠΏΠΎΠ»ΡΡΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ΅ ΡΡΠΈΠ½Π΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ°, ΠΈΠ·Π΄Π°ΡΠ΅Π»ΡΡ Π½ΡΠΌΠ° Π΄Π° Π·Π½Π°Π΅ Π·Π° ΡΠΎΠ²Π°.
Redis ΡΠΏΠΈΡΡΠΊ
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 Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° Π½ΠΎΠ² ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π·Π° Π½Π°Ρ. ΠΡΠ΅ΠΊΠΈ Π½ΠΎΠ² ID ΡΠ΅ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π²ΡΠ΅ΠΊΠΈ Π½ΠΎΠ² Π·Π°ΠΏΠΈΡ ΡΠ΅ ΠΈΠΌΠ° ΠΏΠΎ-Π²ΠΈΡΠΎΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ.
Π€ΠΎΡΠΌΠ°Ρ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°
ID Π½Π° Π·Π°ΠΏΠΈΡΠ°, Π²ΡΡΠ½Π°Ρ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XADD, ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π΄Π²Π΅ ΡΠ°ΡΡΠΈ:
{millisecondsTime}-{sequenceNumber}
ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈΠΡΠ΅ΠΌΠ΅ β Unix Π²ΡΠ΅ΠΌΠ΅ Π² ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ (ΡΡΡΠ²ΡΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Redis). ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π°ΠΊΠΎ ΡΠ΅ΠΊΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΅ ΡΡΡΠΎΡΠΎ ΠΈΠ»ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ Π·Π°ΠΏΠΈΡ, ΡΠΎΠ³Π°Π²Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ»Π΅ΠΉΠΌΠΎΡΠΎ Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ Π·Π°ΠΏΠΈΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π°ΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΡΡΠ²ΡΡΠ° ΡΠ΅ Π²ΡΡΠ½Π΅ Π½Π°Π·Π°Π΄ Π²ΡΠ² Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠ΅ Π·Π°ΠΏΠ°Π·ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π·Π° Π½Π°ΡΠ°ΡΡΠ²Π°Π½Π΅.
ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅Π½ Π½ΠΎΠΌΠ΅Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π·Π° Π·Π°ΠΏΠΈΡΠΈ, ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ Π·Π° ΡΡΡΠ°ΡΠ° ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°. ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅Π½ Π½ΠΎΠΌΠ΅Ρ ΡΠ΅ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠΈ Ρ 1 ΡΠΏΡΡΠΌΠΎ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ Π·Π°ΠΏΠΈΡ. Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅Π½ Π½ΠΎΠΌΠ΅Ρ Π΅ Ρ ΡΠ°Π·ΠΌΠ΅Ρ 64 Π±ΠΈΡΠ°, ΡΠΎΠ³Π°Π²Π° Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΡΡΠΊΠ²Π°ΡΠ΅ Π½Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π·Π° Π±ΡΠΎΡ Π·Π°ΠΏΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΅Π΄Π½Π° ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°.
Π€ΠΎΡΠΌΠ°ΡΡΡ Π½Π° ΡΠ°ΠΊΠΈΠ²Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΡΡΠ°Π½Π΅Π½ Π½Π° ΠΏΡΡΠ² ΠΏΠΎΠ³Π»Π΅Π΄. ΠΠ΄ΠΈΠ½ Π½Π΅Π΄ΠΎΠ²Π΅ΡΡΠΈΠ² ΡΠΈΡΠ°ΡΠ΅Π» ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΡΠ΄ΠΈ Π·Π°ΡΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π΅ ΡΠ°ΡΡ ΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°. ΠΡΠΈΡΠΈΠ½Π°ΡΠ° Π΅, ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈΡΠ΅ Π½Π° Redis ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΎΠ±Ρ Π²Π°Ρ ΠΏΠΎ ID. Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡΡ Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π·Π°ΠΏΠΈΡΠ°, ΡΠΎΠ²Π° ΠΏΡΠ°Π²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π·Π° Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ. Π©Π΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XRANGE.
ΠΠΊΠΎ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΡΠΈΡΠΈΠ½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΡΠΎΡΠΈ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΠΉΡΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ Π½ΡΠΊΠ°ΠΊΠ²Π° Π²ΡΠ½ΡΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΎ ΠΏΡΠ΅Π΄Π°Π΄Π΅ΠΌ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XADD Π²ΠΌΠ΅ΡΡΠΎ *, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρ:
> XADD somestream 0-1 field value
0-1
> XADD somestream 0-2 foo bar
0-2
ΠΠΎΠ»Ρ, ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΡΡΡΠ±Π²Π° ΡΠ°ΠΌΠΈ Π΄Π° Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΡΠ΅ Π½Π°ΡΠ°ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ID. Π Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΅ "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"
ΠΠ° Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ ΠΈΡΠ΅ΡΠ°ΡΠΈΡΡΠ° ΡΡΡ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ Π΄Π²Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, Ρ.Π΅. 1519073279157-0, ΠΈ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ 1 ΠΊΡΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅Π½ Π½ΠΎΠΌΠ΅Ρ.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ 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. Π’Π°Π·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎ-Π°Π±ΠΎΠ½Π°Ρ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΏΠΎΡΠΎΠΊ, Π½ΠΎ Π²ΡΡΡΠ½ΠΎΡΡ ΡΠ΅ ΠΎΠ±ΡΠ»ΡΠΆΠ²Π° ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π°Π±ΠΎΠ½Π°ΡΠΈ Π² Π³ΡΡΠΏΠ°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΉΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΠΈ:
- ΠΡΡΠΊΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ Π΄ΠΎΡΡΠ°Π²Ρ Π΄ΠΎ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ Π°Π±ΠΎΠ½Π°Ρ Π² Π³ΡΡΠΏΠ°ΡΠ°.
- Π ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π³ΡΡΠΏΠ° Π°Π±ΠΎΠ½Π°ΡΠΈΡΠ΅ ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Ρ Ρ ΠΈΠΌΠ΅ΡΠΎ ΡΠΈ, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π½ΠΈΠ·, ΠΊΠΎΠΉΡΠΎ Π΅ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ ΠΊΡΠΌ Π³Π»Π°Π²Π½ΠΈ ΠΈ ΠΌΠ°Π»ΠΊΠΈ Π±ΡΠΊΠ²ΠΈ. ΠΠΊΠΎ Π°Π±ΠΎΠ½Π°Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΠΏΠ°Π΄Π½Π΅ ΠΎΡ Π³ΡΡΠΏΠ°ΡΠ°, ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²Π΅Π½ Π² Π³ΡΡΠΏΠ°ΡΠ°, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎΡΠΎ ΡΠΈ ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΎ ΠΈΠΌΠ΅.
- ΠΡΡΠΊΠ° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠ° Π³ΡΡΠΏΠ° ΡΠ»Π΅Π΄Π²Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° Π·Π° βΠΏΡΡΠ²ΠΎΡΠΎ Π½Π΅ΠΏΡΠΎΡΠ΅ΡΠ΅Π½ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅β. ΠΠΎΠ³Π°ΡΠΎ Π°Π±ΠΎΠ½Π°Ρ ΠΏΠΎΠΈΡΠΊΠ° Π½ΠΎΠ²ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΡΠ°ΠΌΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π½ΠΈΠΊΠΎΠ³Π° ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π½Π΅ ΡΠ° Π±ΠΈΠ»ΠΈ Π΄ΠΎΡΡΠ°Π²ΡΠ½ΠΈ Π½Π° Π½ΠΈΡΠΎ Π΅Π΄ΠΈΠ½ Π°Π±ΠΎΠ½Π°Ρ Π² Π³ΡΡΠΏΠ°ΡΠ°.
- ΠΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° ΠΈΠ·ΡΠΈΡΠ½ΠΎ ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅, ΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΡ Π°Π±ΠΎΠ½Π°ΡΠ°. ΠΠΎΠΊΠ°ΡΠΎ ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅ ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π°, Π·Π°ΡΠ²Π΅Π½ΠΎΡΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΠΎΡΡΠ°Π½Π΅ Π² ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ "Π² ΠΎΡΠ°ΠΊΠ²Π°Π½Π΅".
- Π ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠ°ΡΠ° Π³ΡΡΠΏΠ° Π²ΡΠ΅ΠΊΠΈ Π°Π±ΠΎΠ½Π°Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΈΡΠΊΠ° ΠΈΡΡΠΎΡΠΈΡ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΌΡ Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ, Π½ΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ (Π² ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ βΡΠ°ΠΊΠ°β)
Π ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΡΠΌΠΈΡΡΠ» ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° Π³ΡΡΠΏΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΡΠ°Π·ΠΈ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½:
+----------------------------------------+
| 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)
+----------------------------------------+
Π‘Π΅Π³Π° Π΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΡΠ΅ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° Consumer Group, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:
- XGROUP ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅, ΡΠ½ΠΈΡΠΎΠΆΠ°Π²Π°Π½Π΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π³ΡΡΠΏΠΈ
- XREADGROUP ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° ΠΏΠΎΡΠΎΠΊ ΠΏΡΠ΅Π· Π³ΡΡΠΏΠ°
- XACK - ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Π°Π±ΠΎΠ½Π°ΡΠ° Π΄Π° ΠΌΠ°ΡΠΊΠΈΡΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΊΠ°ΡΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΎ
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠ° Π³ΡΡΠΏΠ°
ΠΠ° ΠΏΡΠΈΠ΅ΠΌΠ΅ΠΌ, ΡΠ΅ mystream Π²Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°. Π’ΠΎΠ³Π°Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π³ΡΡΠΏΠ° ΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°:
> XGROUP CREATE mystream mygroup $
OK
ΠΠΎΠ³Π°ΡΠΎ ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π³ΡΡΠΏΠ°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ΄Π°Π΄Π΅ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ ΠΊΠΎΠΉΡΠΎ Π³ΡΡΠΏΠ°ΡΠ° ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠΊΠΎ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈ Π½ΠΎΠ²ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ $ (ΠΊΠ°ΠΊΡΠΎ Π² Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎ-Π³ΠΎΡΠ΅). ΠΠΊΠΎ Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ 0 Π²ΠΌΠ΅ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, Π²ΡΠΈΡΠΊΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² Π½ΠΈΡΠΊΠ°ΡΠ° ΡΠ΅ Π±ΡΠ΄Π°Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π·Π° Π³ΡΡΠΏΠ°ΡΠ°.
Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ Π³ΡΡΠΏΠ°ΡΠ° Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½Π°, ΠΌΠΎΠΆΠ΅ΠΌ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Π΄Π° ΡΠ΅ΡΠ΅ΠΌ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XREADGROUP. Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° XREAD ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π½Π΅Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½Π°ΡΠ° ΠΎΠΏΡΠΈΡ ΠΠΠΠΠΠ ΠΠΠ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° ΠΈΠΌΠ° Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½Π° ΠΎΠΏΡΠΈΡ 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"
ΠΠΎΡΠ½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π³Π»Π°ΡΠΈ Π΄ΠΎΡΠ»ΠΎΠ²Π½ΠΎ, ΠΊΠ°ΠΊΡΠΎ ΡΠ»Π΅Π΄Π²Π°:
βΠΠ·, Π°Π±ΠΎΠ½Π°Ρ ΠΠ»ΠΈΡ, ΡΠ»Π΅Π½ Π½Π° ΠΌΠΎΡΡΠ° Π³ΡΡΠΏΠ°, ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ° Π΅Π΄Π½ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΌΠΎΡ ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΠ΅ΡΠΎ Π½ΠΈΠΊΠΎΠ³Π° ΠΏΡΠ΅Π΄ΠΈ Π½Π΅ Π΅ Π±ΠΈΠ»ΠΎ Π΄ΠΎΡΡΠ°Π²ΡΠ½ΠΎ Π½Π° Π½ΠΈΠΊΠΎΠ³ΠΎ.β
ΠΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ Π°Π±ΠΎΠ½Π°Ρ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΡΡ Ρ Π³ΡΡΠΏΠ°, ΡΠΎΠΉ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈ ΡΠ²ΠΎΠ΅ΡΠΎ ΠΈΠΌΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΡΠ½ΠΈΠΊΠ°Π»Π½ΠΎ ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ° Π² Π³ΡΡΠΏΠ°ΡΠ°. Π Π³ΠΎΡΠ½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΠΌΠ° ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ΅Π½ Π΄Π΅ΡΠ°ΠΉΠ» - ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ">". Π’ΠΎΠ·ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΈΠ»ΡΡΠΈΡΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ°, ΠΎΡΡΠ°Π²ΡΠΉΠΊΠΈ ΡΠ°ΠΌΠΎ ΡΠ΅Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½ΠΈΠΊΠΎΠ³Π° ΠΏΡΠ΅Π΄ΠΈ Π½Π΅ ΡΠ° Π±ΠΈΠ»ΠΈ Π΄ΠΎΡΡΠ°Π²ΡΠ½ΠΈ.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° Π² ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΡΠ»ΡΡΠ°ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ΅Π°Π»Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΊΠ°ΡΠΎ 0 ΠΈΠ»ΠΈ Π΄ΡΡΠ³ Π²Π°Π»ΠΈΠ΄Π΅Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XREADGROUP ΡΠ΅ Π²ΠΈ Π²ΡΡΠ½Π΅ Ρ ΡΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ° ΡΡΡ ΡΡΠ°ΡΡΡ "Π² ΠΎΡΠ°ΠΊΠ²Π°Π½Π΅", ΠΊΠΎΠΈΡΠΎ ΡΠ° Π±ΠΈΠ»ΠΈ Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π½Π° ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈΡ Π°Π±ΠΎΠ½Π°Ρ (ΠΠ»ΠΈΡΠ°), Π½ΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ° Π±ΠΈΠ»ΠΈ ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XACK.
ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅ΡΡΠ²Π°ΠΌΠ΅ ΡΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠ°ΡΠΎ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΠΏΠΎΡΠΎΡΠΈΠΌ ID 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) (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"
ΠΠΎΠ±, ΡΠ»Π΅Π½ Π½Π° ΠΌΠΎΡΡΠ° Π³ΡΡΠΏΠ°, ΠΏΠΎΠΈΡΠΊΠ° Π½Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π΄Π²Π΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΠΎΡΡΠΈΡΠ° ΡΠ°ΠΌΠΎ Π½Π΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ">". ΠΠ°ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ "ΡΠ±ΡΠ»ΠΊΠ°" Π½ΡΠΌΠ° Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²Π΅ΡΠ΅ Π΅ Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΎ Π½Π° ΠΠ»ΠΈΡ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΠΎΠ± ΠΏΠΎΠ»ΡΡΠ°Π²Π° "ΠΏΠΎΡΡΠΎΠΊΠ°Π»" ΠΈ "ΡΠ³ΠΎΠ΄Π°".
ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΠΠ»ΠΈΡ, ΠΠΎΠ± ΠΈ Π²ΡΠ΅ΠΊΠΈ Π΄ΡΡΠ³ Π°Π±ΠΎΠ½Π°Ρ Π½Π° Π³ΡΡΠΏΠ°ΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ΡΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡΠΈ ΠΏΠΎΡΠΎΠΊ. Π’Π΅ ΠΌΠΎΠ³Π°Ρ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΡΠ΅ΡΠ°Ρ ΡΠ²ΠΎΡΡΠ° ΠΈΡΡΠΎΡΠΈΡ Π½Π° Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Ρ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ.
Π’ΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π½Π΅ΡΠ°:
- ΠΠ΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Π°Π±ΠΎΠ½Π°ΡΡΡ ΡΡΠΈΡΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° XREADGROUP, ΡΠΎΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° Π² ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ βΡΠ°ΠΊΠ°β ΠΈ ΡΠ΅ ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π° Π½Π° ΡΠΎΠ·ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ Π°Π±ΠΎΠ½Π°Ρ. ΠΡΡΠ³ΠΈ Π°Π±ΠΎΠ½Π°ΡΠΈ Π½Π° Π³ΡΡΠΏΠ°ΡΠ° Π½ΡΠΌΠ° Π΄Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ°Ρ ΡΠΎΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
- ΠΠ±ΠΎΠ½Π°ΡΠΈΡΠ΅ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠΈ ΠΏΡΡΠ²ΠΎΡΠΎ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π°Π½Π΅, Π½ΡΠΌΠ° Π½ΡΠΆΠ΄Π° Π΄Π° Π³ΠΈ ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ½ΠΎ.
- Π‘ XREADGROUP ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½ΠΈΡΠΊΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, Π½ΠΎ Π·Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΡΠΎΠ²Π°, ΡΡΡΠ±Π²Π° ΠΏΡΡΠ²ΠΎ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π³ΡΡΠΏΠΈ Ρ Π΅Π΄Π½ΠΎ ΠΈ ΡΡΡΠΎ ΠΈΠΌΠ΅ Π·Π° Π²ΡΡΠΊΠ° Π½ΠΈΡΠΊΠ°, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ XGROUP
ΠΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ ΠΏΡΠΈ ΡΡΠΈΠ²
ΠΠ±ΠΎΠ½Π°ΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΠΈ ΠΎΡ ΠΏΠΎΠ²ΡΠ΅Π΄Π°ΡΠ° ΠΈ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ ΡΠ²ΠΎΡ ΡΠΏΠΈΡΡΠΊ ΡΡΡ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΡΡ ΡΡΠ°ΡΡΡ βΡΠ°ΠΊΠ°Ρβ. Π ΡΠ΅Π°Π»Π½ΠΈΡ ΡΠ²ΡΡ ΠΎΠ±Π°ΡΠ΅ Π°Π±ΠΎΠ½Π°ΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΡΡ. ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Ρ Π±Π»ΠΎΠΊΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° Π°Π±ΠΎΠ½Π°Ρ, Π°ΠΊΠΎ Π°Π±ΠΎΠ½Π°ΡΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΠΈ ΠΎΡ ΠΏΠΎΠ²ΡΠ΅Π΄Π°?
Consumer Group ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΎΡΠ½ΠΎ Π·Π° ΡΠ°ΠΊΠΈΠ²Π° ΡΠ»ΡΡΠ°ΠΈ - ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΠΊΠ° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ.
ΠΡΡΠ²ΠΎΡΠΎ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅, Π΅ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° XPENDING, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π° Π²ΡΠΈΡΠΊΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² Π³ΡΡΠΏΠ°ΡΠ° ΡΡΡ ΡΡΠ°ΡΡΡ βΡΠ°ΠΊΠ°Ρβ. Π Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠ°ΡΠ° ΡΠΈ ΡΠΎΡΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΡΠ°ΠΌΠΎ Ρ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°: ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π½ΠΈΡΠΊΠ°ΡΠ° ΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π³ΡΡΠΏΠ°ΡΠ°:
> 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:
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 ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°ΠΌΠΎ Π·Π° Π²ΡΡΡΠ°Π½Π΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π°ΠΊΠΎ Π½Π΅ ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π°ΡΠ΅ ΠΎΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΠ²Π΅Π»ΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°.
ΠΡΠΎΡΡ Π·Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠ°
ΠΡΠΎΡΡΡΡ, ΠΊΠΎΠΉΡΠΎ Π²ΠΈΠΆΠ΄Π°ΡΠ΅ Π² ΠΈΠ·Ρ ΠΎΠ΄Π° 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) 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 ΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ ΠΊΡΠΌ ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½ΠΈ Π²ΡΠ·Π»ΠΈ ΠΈ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π° Π²ΡΠ² ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΊΠ°ΡΠΎ AOF (ΠΌΠΎΠΌΠ΅Π½ΡΠ½Π° ΡΠ½ΠΈΠΌΠΊΠ° Π½Π° Π²ΡΠΈΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ) ΠΈ RDB (Π΄Π½Π΅Π²Π½ΠΈΠΊ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° Π·Π°ΠΏΠΈΡ). ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡΠ΅ Π³ΡΡΠΏΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π°ΠΊΠΎ Π΄Π°Π΄Π΅Π½ΠΎ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΅ Π² ΡΡΠ°ΡΡΡ βΡΠ°ΠΊΠ°Ρβ Π½Π° Π³Π»Π°Π²Π½ΠΈΡ Π²ΡΠ·Π΅Π», ΡΠΎΠ³Π°Π²Π° Π½Π° ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½ΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ ΡΠΎΠ²Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΠΈΠΌΠ° ΡΡΡΠΈΡ ΡΡΠ°ΡΡΡ.
ΠΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΎΡ ΠΏΠΎΡΠΎΠΊ
ΠΠΌΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ 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