Redis Stream - сигурност ΠΈ приспособливост Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ систСми Π·Π° ΠΏΠΎΡ€Π°ΠΊΠΈ

Redis Stream - сигурност ΠΈ приспособливост Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ систСми Π·Π° ΠΏΠΎΡ€Π°ΠΊΠΈ

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:

  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 користи ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Consumer Group. Овој ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ Π΅ сличСн Π½Π° псСвдо-ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ‚Π½ΠΈΠΊ, кој ΠΏΡ€ΠΈΠΌΠ° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΎΠ΄ стрим, Π½ΠΎ Π²ΡΡƒΡˆΠ½ΠΎΡΡ‚ Π³ΠΎ опслуТуваат повСќС ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ‚Π½ΠΈΡ†ΠΈ Π²ΠΎ Π³Ρ€ΡƒΠΏΠ°Ρ‚Π°, ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°Ρ˜ΡœΠΈ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ Π³Π°Ρ€Π°Π½Ρ†ΠΈΠΈ:

  1. БСкоја ΠΏΠΎΡ€Π°ΠΊΠ° сС доставува Π΄ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ‚Π½ΠΈΠΊ Π²ΠΎ Π³Ρ€ΡƒΠΏΠ°Ρ‚Π°.
  2. Π’ΠΎ Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π³Ρ€ΡƒΠΏΠ°Ρ‚Π°, ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ‚Π½ΠΈΡ†ΠΈΡ‚Π΅ сС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΡƒΠ²Π°Π°Ρ‚ ΠΏΠΎ Π½ΠΈΠ²Π½ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅, ΡˆΡ‚ΠΎ Π΅ Π½ΠΈΠ·Π° чувствитСлна Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π±ΡƒΠΊΠ²ΠΈ. Ако нСкој ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ‚Π½ΠΈΠΊ ΠΏΡ€ΠΈΠ²Ρ€Π΅ΠΌΠ΅Π½ΠΎ сС ΠΎΡ‚ΠΊΠ°ΠΆΠ΅ ΠΎΠ΄ Π³Ρ€ΡƒΠΏΠ°Ρ‚Π°, Ρ‚ΠΎΡ˜ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ Π²Ρ€Π°Ρ‚Π΅Π½ Π²ΠΎ Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ своС СдинствСно ΠΈΠΌΠ΅.
  3. БСкоја Π³Ρ€ΡƒΠΏΠ° Π½Π° ΠΏΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΈ Π³ΠΎ слСди ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΎΡ‚ β€žΠΏΡ€Π²Π° Π½Π΅ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π° ΠΏΠΎΡ€Π°ΠΊΠ°β€œ. Кога ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ‚Π½ΠΈΠΊΠΎΡ‚ Π±Π°Ρ€Π° Π½ΠΎΠ²ΠΈ ΠΏΠΎΡ€Π°ΠΊΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΈΠΌΠ° само ΠΏΠΎΡ€Π°ΠΊΠΈ ΠΊΠΎΠΈ никогаш ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ Π½Π΅ Π±ΠΈΠ»Π΅ доставСни Π΄ΠΎ Π½ΠΈΠ΅Π΄Π΅Π½ ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ‚Π½ΠΈΠΊ Π²ΠΎ Π³Ρ€ΡƒΠΏΠ°Ρ‚Π°.
  4. ΠŸΠΎΡΡ‚ΠΎΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° Сксплицитно Π΄Π° сС ΠΏΠΎΡ‚Π²Ρ€Π΄ΠΈ Π΄Π΅ΠΊΠ° ΠΏΠΎΡ€Π°ΠΊΠ°Ρ‚Π° Π±ΠΈΠ»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½Π° ΠΎΠ΄ ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ‚Π½ΠΈΠΊΠΎΡ‚. Π‘Π΅ Π΄ΠΎΠ΄Π΅ΠΊΠ° Π½Π΅ сС ΠΏΠΎΠ²ΠΈΠΊΠ° ΠΎΠ²Π°Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π±Π°Ρ€Π°Π½Π°Ρ‚Π° ΠΏΠΎΡ€Π°ΠΊΠ° ќС останС Π²ΠΎ статусот β€žΠ²ΠΎ Ρ‡Π΅ΠΊΠ°ΡšΠ΅β€œ.
  5. Π’ΠΎ Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π“Ρ€ΡƒΠΏΠ°Ρ‚Π° Π½Π° ΠΏΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΈ, сСкој ΠΏΡ€Π΅Ρ‚ΠΏΠ»Π°Ρ‚Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ±Π°Ρ€Π° ΠΈΡΡ‚ΠΎΡ€ΠΈΡ˜Π° Π½Π° ΠΏΠΎΡ€Π°ΠΊΠΈ ΠΊΠΎΠΈ ΠΌΡƒ Π±ΠΈΠ»Π΅ доставСни, Π½ΠΎ сè ΡƒΡˆΡ‚Π΅ Π½Π΅ сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ (Π²ΠΎ статусот β€žΠ²ΠΎ Ρ‡Π΅ΠΊΠ°ΡšΠ΅β€œ)

Π’ΠΎ извСсна смисла, ΡΠΎΡΡ‚ΠΎΡ˜Π±Π°Ρ‚Π° Π½Π° Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·Ρ€Π°Π·ΠΈ Π½Π° слСдниов Π½Π°Ρ‡ΠΈΠ½:

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

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€