Redis Stream β€” надСТдност ΠΈ мащабируСмост Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ систСми Π·Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ

Redis Stream β€” надСТдност ΠΈ мащабируСмост Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ систСми Π·Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ

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:

  1. Всяко Π½ΠΎΠ²ΠΎ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ сС доставя Π΄ΠΎ всСки подписчик. Π’ΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π° ΠΎΡ‚ блокиращия Redis List, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΡ‚ΠΎ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Ρ‰Π΅ бъдС ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Π½ΠΎ само ΠΎΡ‚ Π΅Π΄ΠΈΠ½ подписчик.
  2. Π”ΠΎΠΊΠ°Ρ‚ΠΎ Π² Redis Pub/Sub всички ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ сС забравят ΠΈ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ сС Π·Π°ΠΏΠ°Π·Π²Π°Ρ‚, Π² Stream всички ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π·Π° Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ срок (освСн Π°ΠΊΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Π½Π΅ ΠΈΠ·Π²ΠΈΠΊΠ° Сксплицитно ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ).
  3. 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 ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° концСпция, Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° Π“Ρ€ΡƒΠΏΠ° Π°Π±ΠΎΠ½Π°Ρ‚ΠΈ. Π’Π°Π·ΠΈ концСпция Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° псСвдо-Π°Π±ΠΎΠ½Π°Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΠ°, Π½ΠΎ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ сС обслуТва ΠΎΡ‚ няколко Π°Π±ΠΎΠ½Π°Ρ‚Π° Π² Π³Ρ€ΡƒΠΏΠ°Ρ‚Π°, прСдоставяйки ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Π³Π°Ρ€Π°Π½Ρ†ΠΈΠΈ:

  1. Всяко ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ сС доставя Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π°Π±ΠΎΠ½Π°Ρ‚ΠΈ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π³Ρ€ΡƒΠΏΠ°Ρ‚Π°.
  2. Π’ Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° Π°Π±ΠΎΠ½Π°Ρ‚ΠΈΡ‚Π΅ сС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ‚ ΠΏΠΎ ΠΈΠΌΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π½ΠΈΠ· с ΠΎΠ³Π»Π΅Π΄ Π½Π° Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π°. Ако някой Π°Π±ΠΎΠ½Π°Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·Π»Π΅Π·Π΅ ΠΎΡ‚ Π³Ρ€ΡƒΠΏΠ°Ρ‚Π°, Ρ‚ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΠΈ Π² Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° с ΡƒΠ½ΠΈΠΊΠ°Π»Π½ΠΎΡ‚ΠΎ си ΠΈΠΌΠ΅.
  3. Всяка Π“Ρ€ΡƒΠΏΠ° Π°Π±ΠΎΠ½Π°Ρ‚ΠΈ слСдва концСпцията 'ΠΏΡŠΡ€Π²ΠΎ Π½Π΅ΠΏΡ€Π΅Π΄Π°Π΄Π΅Π½ΠΎ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅'. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π°Π±ΠΎΠ½Π°Ρ‚ΡŠΡ‚ иска Π½ΠΎΠ²ΠΈ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ, Ρ‚ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈ само Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ са Π±ΠΈΠ»ΠΈ доставяни Π½Π° Π΄Ρ€ΡƒΠ³ Π°Π±ΠΎΠ½Π°Ρ‚ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π³Ρ€ΡƒΠΏΠ°Ρ‚Π°.
  4. Π‘ΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° явно ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½Π°Ρ‚Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Π°Π±ΠΎΠ½Π°Ρ‚Π°. Π”ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π΅ бъдС ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° Ρ‚Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°, поисканото ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Ρ‰Π΅ останС Π² статус 'ΠΎΡ‡Π°ΠΊΠ²Π°Π½Π΅'.
  5. Всяка Π³Ρ€ΡƒΠΏΠ° Π°Π±ΠΎΠ½Π°Ρ‚ΠΈ позволява Π½Π° всСки Π°Π±ΠΎΠ½Π°Ρ‚ Π΄Π° иска история Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡΡ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ са Π±ΠΈΠ»ΠΈ доставСни ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½Π΅Π³ΠΎ, Π½ΠΎ всС ΠΎΡ‰Π΅ Π½Π΅ са Π±ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ (Π² статус 'ΠΎΡ‡Π°ΠΊΠ²Π°Π½Π΅').

Π’ извСстСн смисъл, ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС прСдставСно Ρ‚Π°ΠΊΠ°:

+----------------------------------------+
| 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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster