Redis Stream - рддрдкрд╛рдИрдВрдХреЛ рд╕рдиреНрджреЗрд╢ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рд░ рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА

Redis Stream - рддрдкрд╛рдИрдВрдХреЛ рд╕рдиреНрджреЗрд╢ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рд░ рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА

Redis Stream рд╕рдВрд╕реНрдХрд░рдг 5.0 рдХреЛ рд╕рд╛рде Redis рдорд╛ рдкреЗрд╢ рдЧрд░рд┐рдПрдХреЛ рдирдпрд╛рдБ рд╕рд╛рд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реЛ
рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдкрдорд╛, Redis рд╕реНрдЯреНрд░рд┐рдо рдПрдХ рд╕реВрдЪреА рд╣реЛ рдЬрд╕рдорд╛ рддрдкрд╛рдЗрдБ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рд╣рд░реВ рдердкреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдХреЛ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рдЫред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, ID рд╕реНрд╡рддрдГ рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫ рд░ рдЯрд╛рдЗрдорд╕реНрдЯреНрдпрд╛рдореНрдк рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред рддрд╕рд░реНрде, рддрдкрд╛рдИрд▓реЗ рд╕рдордпрд╕рдБрдЧреИ рд░реЗрдХрд░реНрдбрдХреЛ рджрд╛рдпрд░рд╛ рдХреНрд╡реЗрд░реА рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд╡рд╛ рд╕реНрдЯреНрд░рд┐рдордорд╛ рдЖрдЗрдкреБрдЧреНрджрд╛ рдирдпрд╛рдБ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬрд╕реНрддреИ Unix "tail -f" рдХрдорд╛рдгреНрдбрд▓реЗ рд▓рдЧ рдлрд╛рдЗрд▓ рдкрдвреНрдЫ рд░ рдирдпрд╛рдБ рдбреЗрдЯрд╛рдХреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдЧрд░реНрджрд╛ рдлреНрд░рд┐рдЬ рд╣реБрдиреНрдЫред рдиреЛрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рдзреЗрд░реИ рдХреНрд▓рд╛рдЗрдиреНрдЯрд╣рд░реВрд▓реЗ рдПрдХреИ рд╕рдордпрдорд╛ рдереНрд░реЗрдб рд╕реБрдиреНрди рд╕рдХреНрдЫрдиреН, рдЬрд╕реНрддреИ рдзреЗрд░реИ "tail -f" рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрд▓реЗ рдПрдХрдЕрд░реНрдХрд╛рд╕рдБрдЧ рд╡рд┐рд╡рд╛рдж рдирдЧрд░рд┐рдХрди рдлрд╛рдЗрд▓ рдкрдвреНрди рд╕рдХреНрдЫрдиреНред

рдирдпрд╛рдБ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рдХрд╛ рд╕рдмреИ рдлрд╛рдЗрджрд╛рд╣рд░реВ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐, рд░реЗрдбрд┐рд╕ рд╕реНрдЯреНрд░рд┐рдордХреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рд▓рд╛рдИ рдЖрдВрд╢рд┐рдХ рд░реВрдкрдорд╛ рдирдХреНрдХрд▓ рдЧрд░реНрдиреЗ рд▓рд╛рдореЛ-рдЕрд╡рд╕реНрдерд┐рдд Redis рд╕рдВрд░рдЪрдирд╛рд╣рд░реВрдорд╛ рджреНрд░реБрдд рдирдЬрд░ рд░рд╛рдЦреМрдВред

Redis PUB/SUB

Redis Pub/Sub рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рдиреНрджреЗрд╢ рдкреНрд░рдгрд╛рд▓реА рд╣реЛ рдЬреБрди рдкрд╣рд┐рд▓реЗ рдиреИ рддрдкрд╛рдЗрдБрдХреЛ рдореБрдЦреНрдп рдореВрд▓реНрдп рд╕реНрдЯреЛрд░ рдорд╛ рдирд┐рд░реНрдорд┐рдд рдЫред рдпрджреНрдпрдкрд┐, рд╕рд╛рджрдЧреА рд▓рд╛рдЧрддрдорд╛ рдЖрдЙрдБрдЫ:

  • рдпрджрд┐ рдкреНрд░рдХрд╛рд╢рдХ рдХреБрдиреИ рдХрд╛рд░рдгрд▓реЗ рдЕрд╕рдлрд▓ рднрдпреЛ рднрдиреЗ, рдЙрд╕рд▓реЗ рдЖрдлреНрдирд╛ рд╕рдмреИ рд╕рджрд╕реНрдпрд╣рд░реВ рдЧреБрдорд╛рдЙрдБрдЫ
  • рдкреНрд░рдХрд╛рд╢рдХрд▓реЗ рдЖрдлреНрдирд╛ рд╕рдмреИ рд╕рджрд╕реНрдпрд╣рд░реВрдХреЛ рд╕рд╣реА рдареЗрдЧрд╛рдирд╛ рдЬрд╛рдиреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ
  • рдпрджрд┐ рдбрд╛рдЯрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рднрдиреНрджрд╛ рдЫрд┐рдЯреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рднрдпреЛ рднрдиреЗ рдкреНрд░рдХрд╛рд╢рдХрд▓реЗ рдЖрдлреНрдирд╛ рд╕рджрд╕реНрдпрд╣рд░реВрд▓рд╛рдИ рдХрд╛рдордорд╛ рдУрднрд░рд▓реЛрдб рдЧрд░реНрди рд╕рдХреНрдЫ
  • рд╕рдиреНрджреЗрд╢ рдкреНрд░рдХрд╛рд╢рди рдкрдЫрд┐ рддреБрд░реБрдиреНрддреИ рдкреНрд░рдХрд╛рд╢рдХрдХреЛ тАЛтАЛрдмрдлрд░рдмрд╛рдЯ рдореЗрдЯрд╛рдЗрдиреНрдЫ, рдпреЛ рд╕рдиреНрджреЗрд╢ рдХрддрд┐ рд╕рджрд╕реНрдпрд╣рд░реВрд▓рд╛рдИ рдбреЗрд▓рд┐рднрд░ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рд░ рдЙрдиреАрд╣рд░реВрд▓реЗ рдпреЛ рд╕рдиреНрджреЗрд╢рд▓рд╛рдИ рдХрддрд┐ рдЫрд┐рдЯреЛ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рд╕рдХреНрд╖рдо рднрдП рддрд╛рдкрдирд┐ред
  • рд╕рдмреИ рд╕рджрд╕реНрдпрд╣рд░реВрд▓реЗ рдПрдХреИ рд╕рдордпрдорд╛ рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫрдиреНред рдПрдЙрдЯреИ рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреЗ рдХреНрд░рдордорд╛ рд╕рджрд╕реНрдпрд╣рд░реВ рдЖрдлреИрдВрд▓реЗ рдХреБрдиреИ рди рдХреБрдиреИ рд░реВрдкрдорд╛ рдЖрдкрд╕рдорд╛ рд╕рд╣рдордд рд╣реБрдиреБрдкрд░реНрдЫред
  • рдЧреНрд░рд╛рд╣рдХрд▓реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╢реЛрдзрди рдЧрд░реЗрдХреЛ рдЫ рднрдиреА рдкреБрд╖реНрдЯрд┐ рдЧрд░реНрди рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдирд┐рд░реНрдорд┐рдд рд╕рдВрдпрдиреНрддреНрд░ рдЫреИрдиред рдпрджрд┐ рдПрдХ рдЧреНрд░рд╛рд╣рдХрд▓реЗ рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдХреНрд░рдордорд╛ рдХреНрд░реНрдпрд╛рд╕ рд╣реБрдиреНрдЫ рднрдиреЗ, рдкреНрд░рдХрд╛рд╢рдХрд▓рд╛рдИ рдпрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рдерд╛рд╣рд╛ рд╣реБрдБрджреИрдиред

Redis рд╕реВрдЪреА

Redis List рдПрдЙрдЯрд╛ рдбрд╛рдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реЛ рдЬрд╕рд▓реЗ рдкрдвреНрдиреЗ рдЖрджреЗрд╢рд╣рд░реВрд▓рд╛рдИ рдмреНрд▓рдХ рдЧрд░реНрдиреЗ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред рддрдкрд╛рдИрдВрд▓реЗ рд╕реВрдЪреАрдХреЛ рд╕реБрд░реБ рд╡рд╛ рдЕрдиреНрддреНрдпрдмрд╛рдЯ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдердкреНрди рд░ рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрд╕ рд╕рдВрд░рдЪрдирд╛рдХреЛ рдЖрдзрд╛рд░рдорд╛, рддрдкрд╛рдЗрдБ рддрдкрд╛рдЗрдБрдХреЛ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд▓рд╛рдЧрд┐ рд░рд╛рдореНрд░реЛ рд╕реНрдЯреНрдпрд╛рдХ рд╡рд╛ рд▓рд╛рдо рдмрдирд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд░ рдзреЗрд░реИ рдЬрд╕реЛ рдХреЗрд╕рд╣рд░реВрдорд╛ рдпреЛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реБрдиреЗрдЫред Redis Pub/Sub рдмрд╛рдЯ рдореБрдЦреНрдп рднрд┐рдиреНрдирддрд╛рд╣рд░реВ:

  • рд╕рдиреНрджреЗрд╢ рдПрдХ рдЧреНрд░рд╛рд╣рдХрд▓рд╛рдИ рдбреЗрд▓рд┐рднрд░ рдЧрд░рд┐рдПрдХреЛ рдЫред рдкрд╣рд┐рд▓реЛ рдкрдвреНрдиреЗ-рдмреНрд▓рдХ рдЧрд░рд┐рдПрдХреЛ рдХреНрд▓рд╛рдЗрдиреНрдЯрд▓реЗ рдкрд╣рд┐рд▓реЗ рдбрд╛рдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫред
  • рдХреНрд▓рд┐рдиреНрдЯрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдиреНрджреЗрд╢рдХреЛ рд▓рд╛рдЧрд┐ рдкрдвреНрдиреЗ рдЕрдкрд░реЗрд╢рди рдЖрдлреИрдВ рд╕реБрд░реБ рдЧрд░реНрдиреБрдкрд░реНрдЫред рд╕реВрдЪреА рдЧреНрд░рд╛рд╣рдХрд╣рд░реБ рдХреЛ рдмрд╛рд░реЗ рдорд╛ рдХреЗрд╣рд┐ рдерд╛рд╣рд╛ рдЫреИрдиред
  • рд╕рдиреНрджреЗрд╢рд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдиреНрдЫ рдЬрдмрд╕рдореНрдо рдХрд╕реИрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкрдвреНрджреИрди рд╡рд╛ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдореЗрдЯрд╛рдЙрдБрджреИрдиред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдбрд┐рд╕реНрдХрдорд╛ рдбрд╛рдЯрд╛ рдлреНрд▓рд╢ рдЧрд░реНрди Redis рд╕рд░реНрднрд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдирд╛рдЯрдХреАрдп рд░реВрдкрдорд╛ рдмрдвреНрдЫред

рд╕реНрдЯреНрд░рд┐рдордХреЛ рдкрд░рд┐рдЪрдп

рд╕реНрдЯреНрд░рд┐рдордорд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдердкреНрджреИ

рдЯреЛрд▓реА XADD рд╕реНрдЯреНрд░рд┐рдордорд╛ рдирдпрд╛рдБ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдердкреНрдЫред рд░реЗрдХрд░реНрдб рдПрдЙрдЯрд╛ рд╕реНрдЯреНрд░рд┐рдЩ рдорд╛рддреНрд░ рд╣реЛрдЗрди, рдпрд╕рдорд╛ рдПрдХ рд╡рд╛ рдмрдвреА рдХреБрдЮреНрдЬреА-рдорд╛рди рдЬреЛрдбреАрд╣рд░реВ рд╣реБрдиреНрдЫрдиреНред рдпрд╕рд░реА, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рдВрд░рдЪрд┐рдд рдЫ рд░ CSV рдлрд╛рдЗрд▓рдХреЛ рд╕рдВрд░рдЪрдирд╛рд╕рдБрдЧ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ рдЫред

> XADD mystream * sensor-id 1234 temperature 19.8
1518951480106-0

рдорд╛рдерд┐рдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛, рд╣рд╛рдореАрд▓реЗ рдирд╛рдо (рдХреБрдЮреНрдЬреА) "mystream" рдХреЛ рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдордорд╛ рджреБрдИ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдердкреНрдЫреМрдВ: "рд╕реЗрдиреНрд╕рд░-рдЖрдИрдбреА" рд░ "рддрд╛рдкрдорд╛рди" рдХреНрд░рдорд╢рдГ "1234" рд░ "19.8" рдорд╛рдирд╣рд░реВрд╕рдБрдЧред рджреЛрд╕реНрд░реЛ рддрд░реНрдХрдХреЛ рд░реВрдкрдорд╛, рдЖрджреЗрд╢рд▓реЗ рдПрдХ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рд▓рд┐рдиреНрдЫ рдЬреБрди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдорд╛ рддреЛрдХрд┐рдиреНрдЫ - рдпреЛ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рд▓реЗ рд╕реНрдЯреНрд░рд┐рдордорд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рд▓рд╛рдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдкрдорд╛ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрджрдЫред рдпрджреНрдпрдкрд┐, рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛ рд╣рд╛рдореАрд▓реЗ * рдкрд╛рд╕ рдЧрд░реНрдпреМрдВ рдХрд┐рдирднрдиреЗ рд╣рд╛рдореА Redis рд▓реЗ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ ID рдЙрддреНрдкрдиреНрди рдЧрд░реЛрд╕реН рднрдиреНрдиреЗ рдЪрд╛рд╣рдиреНрдЫреМрдВред рдкреНрд░рддреНрдпреЗрдХ рдирдпрд╛рдБ рдЖрдИрдбреА рдмрдвреНрдиреЗрдЫред рддреНрдпрд╕рдХрд╛рд░рдг, рдкреНрд░рддреНрдпреЗрдХ рдирдпрд╛рдБ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдорд╛ рдЕрдШрд┐рд▓реНрд▓реЛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рд╣рд░реВрдХреЛ рд╕рдореНрдмрдиреНрдзрдорд╛ рдЙрдЪреНрдЪ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реБрдиреЗрдЫред

рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рдврд╛рдБрдЪрд╛

рдЖрджреЗрд╢рджреНрд╡рд╛рд░рд╛ рдлрд░реНрдХрд╛рдЗрдПрдХреЛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ ID XADD, рджреБрдИ рднрд╛рдЧрд╣рд░реБ рдорд┐рд▓реЗрд░ рдмрдиреЗрдХреЛ рдЫ:

{millisecondsTime}-{sequenceNumber}

рдорд┐рд▓рд┐рд╕реЗрдХреЗрдиреНрдбрд╕рдордп - рдорд┐рд▓рд┐рд╕реЗрдХреЗрдиреНрдбрдорд╛ рдпреБрдирд┐рдХреНрд╕ рд╕рдордп (Redis рд╕рд░реНрднрд░ рд╕рдордп)ред рдпрджреНрдпрдкрд┐, рдпрджрд┐ рд╣рд╛рд▓рдХреЛ рд╕рдордп рдЕрдШрд┐рд▓реНрд▓реЛ рд░реЗрдХрд░реНрдбрд┐рдЩрдХреЛ рд╕рдордп рднрдиреНрджрд╛ рд╕рдорд╛рди рд╡рд╛ рдХрдо рдЫ рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рдЕрдШрд┐рд▓реНрд▓реЛ рд░реЗрдХрд░реНрдбрд┐рдЩрдХреЛ рдЯрд╛рдЗрдорд╕реНрдЯреНрдпрд╛рдореНрдк рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рддреНрдпрд╕рдХрд╛рд░рдг, рдпрджрд┐ рд╕рд░реНрднрд░ рд╕рдордп рд╕рдордпрдорд╛ рдлрд┐рд░реНрддрд╛ рдЬрд╛рдиреНрдЫ рднрдиреЗ, рдирдпрд╛рдБ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рд▓реЗ рдЕрдЭреИ рдкрдирд┐ рд╡реГрджреНрдзрд┐ рдЧреБрдг рдХрд╛рдпрдо рдЧрд░реНрдиреЗрдЫред

рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдЙрд╣реА рдорд┐рд▓рд┐рд╕реЗрдХреЗрдиреНрдбрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХрд╛ рд░реЗрдХрд░реНрдбрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдЕрдШрд┐рд▓реНрд▓реЛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдХреЛ рддреБрд▓рдирд╛рдорд╛ 1 рджреНрд╡рд╛рд░рд╛ рдмрдврд╛рдЗрдиреЗрдЫред рдХрд┐рдирдХрд┐ рддреНрдпреЛ рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдЖрдХрд╛рд░рдорд╛ 64 рдмрд┐рдЯ рдЫ, рддреНрдпрд╕реЛрднрдП рдЕрднреНрдпрд╛рд╕рдорд╛ рддрдкрд╛рдИрд▓реЗ рдПрдХ рдорд┐рд▓рд┐рд╕реЗрдХреЗрдиреНрдб рднрд┐рддреНрд░ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рд╕рдХрд┐рдиреЗ рд░реЗрдХрд░реНрдбрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛рдХреЛ рд╕реАрдорд╛рдорд╛ рднрд╛рдЧреНрдиреБ рд╣реБрдБрджреИрдиред

рддреНрдпрд╕реНрддрд╛ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдврд╛рдБрдЪрд╛ рдкрд╣рд┐рд▓реЛ рдирдЬрд░рдорд╛ рдЕрдиреМрдареЛ рд▓рд╛рдЧреНрди рд╕рдХреНрдЫред рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╛рд╕реА рдкрд╛рдардХрд▓реЗ рдХрд┐рди рд╕рдордп рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рдХреЛ рднрд╛рдЧ рд╣реЛ рднрдиреЗрд░ рд╕реЛрдЪреНрди рд╕рдХреНрдЫред рдХрд╛рд░рдг рдпреЛ рд╣реЛ рдХрд┐ Redis рд╕реНрдЯреНрд░рд┐рдорд╣рд░реВрд▓реЗ ID рджреНрд╡рд╛рд░рд╛ рджрд╛рдпрд░рд╛ рдкреНрд░рд╢реНрдирд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рд░реЗрдХрд░реНрдб рд╕рд┐рд░реНрдЬрдирд╛ рднрдПрдХреЛ рд╕рдордпрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рднрдПрдХреЛрд▓реЗ, рдпрд╕рд▓реЗ рд╕рдордп рджрд╛рдпрд░рд╛рд╣рд░реВ рдХреНрд╡реЗрд░реА рдЧрд░реНрди рд╕рдореНрднрд╡ рдмрдирд╛рдЙрдБрдЫред рд╣рд╛рдореА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рд╣реЗрд░реНрдиреЗрдЫреМрдВ рдЬрдм рд╣рд╛рдореА рдЖрджреЗрд╢ рд╣реЗрд░реНрдЫреМрдВ XRANGE.

рдпрджрд┐ рдХреБрдиреИ рдХрд╛рд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рдЖрдлреНрдиреИ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЬреБрди, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдХреЗрд╣рд┐ рдмрд╛рд╣реНрдп рдкреНрд░рдгрд╛рд▓реАрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫ, рддрдм рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдЖрджреЗрд╢рдорд╛ рдкрд╛рд╕ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред XADD рд╕рдЯреНрдЯрд╛ * рддрд▓ рджреЗрдЦрд╛рдЗрдПрдХреЛ рд░реВрдкрдорд╛:

> XADD somestream 0-1 field value
0-1
> XADD somestream 0-2 foo bar
0-2

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рдЖрдИрдбреА рд╡реГрджреНрдзрд┐ рдЖрдлреИрд▓рд╛рдИ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрдиреБрдкрд░реНрдЫред рд╣рд╛рдореНрд░реЛ рдЙрджрд╛рд╣рд░рдгрдорд╛, рдиреНрдпреВрдирддрдо рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ "реж-рез" рд╣реЛ, рддреНрдпрд╕реИрд▓реЗ рдЖрджреЗрд╢рд▓реЗ "реж-рез" рдмрд░рд╛рдмрд░ рд╡рд╛ рдХрдо рднрдПрдХреЛ рдЕрд░реНрдХреЛ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрджреИрдиред

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

рдкреНрд░рддреНрдпреЗрдХ рдлрд┐рд░реНрддрд╛ рдЧрд░рд┐рдПрдХреЛ рд░реЗрдХрд░реНрдб рджреБрдИ рддрддреНрд╡рд╣рд░реВрдХреЛ рдПрд░реНрд░реЗ рд╣реЛ: рдПрдХ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рд░ рдХреБрдЮреНрдЬреА-рдорд╛рди рдЬреЛрдбреАрд╣рд░реВрдХреЛ рд╕реВрдЪреАред рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рднрдиреЗрдХрд╛ рдЫреМрдВ рдХрд┐ рд░реЗрдХрд░реНрдб рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рд╣рд░реВ рд╕рдордпрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫрдиреНред рддреНрдпрд╕рдХрд╛рд░рдг, рд╣рд╛рдореА рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рдзрд┐рдХреЛ рджрд╛рдпрд░рд╛ рдЕрдиреБрд░реЛрдз рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдпрджреНрдпрдкрд┐, рд╣рд╛рдореА рдЕрдиреБрд░реЛрдзрдорд╛ рдкреВрд░реНрдг рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрдЗрди, рддрд░ рдХреЗрд╡рд▓ рдпреБрдирд┐рдХреНрд╕ рд╕рдордп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ, рд╕рдореНрдмрдиреНрдзрд┐рдд рднрд╛рдЧ рдЫреЛрдбреЗрд░ред рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ред рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рдХреЛ рд╣рдЯрд╛рдЗрдПрдХреЛ рднрд╛рдЧ рджрд╛рдпрд░рд╛рдХреЛ рд╕реБрд░реБрдорд╛ рд╕реНрд╡рддрдГ рд╢реВрдиреНрдп рд░ рджрд╛рдпрд░рд╛рдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рдЕрдзрд┐рдХрддрдо рд╕рдореНрднрд╛рд╡рд┐рдд рдорд╛рдирдорд╛ рд╕реЗрдЯ рд╣реБрдиреЗрдЫред рддрд▓ рддрдкрд╛рдИрд▓реЗ рдХрд╕рд░реА рджреБрдИ рдорд┐рд▓рд┐рд╕реЗрдХреЗрдиреНрдбрдХреЛ рджрд╛рдпрд░рд╛ рдЕрдиреБрд░реЛрдз рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рднрдиреНрдиреЗ рдЙрджрд╛рд╣рд░рдг рдЫред

> XRANGE mystream 1518951480106 1518951480107
1) 1) 1518951480106-0
   2) 1) "sensor-id"
      2) "1234"
      3) "temperature"
      4) "19.8"

рд╣рд╛рдореАрд╕рдБрдЧ рдпрд╕ рджрд╛рдпрд░рд╛рдорд╛ рдПрдЙрдЯрд╛ рдорд╛рддреНрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЫ, рдпрджреНрдпрдкрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рд╕реЗрдЯрд╣рд░реВрдорд╛ рдлрд░реНрдХрд╛рдЗрдПрдХреЛ рдкрд░рд┐рдгрд╛рдо рдареВрд▓реЛ рд╣реБрди рд╕рдХреНрдЫред рдпрд╕ рдХрд╛рд░рдгрд▓реЗ XRANGE COUNT рд╡рд┐рдХрд▓реНрдкрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред рдорд╛рддреНрд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реЗрд░, рд╣рд╛рдореА рдХреЗрд╡рд▓ рдкрд╣рд┐рд▓реЛ N рд░реЗрдХрд░реНрдбрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдЕрд░реНрдХреЛ N рд░реЗрдХрд░реНрдбрд╣рд░реВ (рдкреГрд╖реНрдард╛рдВрдХрди) рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ, рд╣рд╛рдореА рдкрдЫрд┐рд▓реНрд▓реЛ рдкреНрд░рд╛рдкреНрдд рдЖрдИрдбреА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ, рдпрд╕рд▓рд╛рдИ рдмрдврд╛рдЙрди рд╕рдХреНрдЫреМрдВ рдЕрдиреБрдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдПрдХ рджреНрд╡рд╛рд░рд╛ рд░ рдлреЗрд░рд┐ рд╕реЛрдзреНрдиреБрд╣реЛрд╕реНред рдпрд╕рд▓рд╛рдИ рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдгрдорд╛ рд╣реЗрд░реМрдВред рд╣рд╛рдореА 10 рддрддреНрд╡рд╣рд░реВ рдердкреНрди рд╕реБрд░реБ рдЧрд░реНрдЫреМрдВ XADD (рдорд╛рдИрд╕реНрдЯреНрд░реАрдо рдкрд╣рд┐рд▓реЗ рдиреИ 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 рд╕реВрдЪреА рдЕрд╡рд░реБрджреНрдз рдЧрд░реНрдиреЗ рдЬрд╕реНрддреЛ рд▓рд╛рдЧреНрди рд╕рдХреНрдЫ, рддрд░ Redis рд╕реНрдЯреНрд░рд┐рдо рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рднрдиреНрдиреЗрдорд╛ рдЖрдзрд╛рд░рднреВрдд рднрд┐рдиреНрдирддрд╛рд╣рд░реВ рдЫрдиреН:

  1. рдкреНрд░рддреНрдпреЗрдХ рдирдпрд╛рдБ рд╕рдиреНрджреЗрд╢ рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рд╣рдХрд▓рд╛рдИ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдбреЗрд▓рд┐рднрд░ рдЧрд░рд┐рдиреНрдЫред рдпреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрд╡рд░реБрджреНрдз Redis рд╕реВрдЪреА рднрдиреНрджрд╛ рдлрд░рдХ рдЫ, рдЬрд╣рд╛рдБ рдПрдХ рдирдпрд╛рдБ рд╕рдиреНрджреЗрд╢ рдХреЗрд╡рд▓ рдПрдХ рд╕рджрд╕реНрдп рджреНрд╡рд╛рд░рд╛ рдкрдвреНрди рд╕рдХрд┐рдиреНрдЫред
  2. Redis Pub/Sub рдорд╛ рд╣реБрдБрджрд╛ рд╕рдмреИ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдмрд┐рд░реНрд╕рд┐рдиреНрдЫрдиреН рд░ рдХрд╣рд┐рд▓реНрдпреИ рдЬрд╛рд░реА рд░рд╣рдБрджреИрдирдиреН, рд╕реНрдЯреНрд░рд┐рдордорд╛ рд╕рдмреИ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓рдХрд╛ рд▓рд╛рдЧрд┐ рд░рд╛рдЦрд┐рдиреНрдЫрдиреН (рдЬрдмрд╕рдореНрдо рдХреНрд▓рд╛рдЗрдиреНрдЯрд▓реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдореЗрдЯрд╛рдЙрдиреЗ рдХрд╛рд░рдг рдмрдирд╛рдЙрдБрджреИрди)ред
  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 рд╡рд┐рдХрд▓реНрдк рд╡реИрдХрд▓реНрдкрд┐рдХ рдЫред рд╡рд╛рд╕реНрддрд╡рдорд╛, рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдЖрджреЗрд╢ рд╡рд┐рдХрд▓реНрдк рд╕реНрдЯреНрд░рд┐рдореНрд╕ рд╡рд┐рдХрд▓реНрдк рд╣реЛ, рдЬрд╕рд▓реЗ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЕрдзрд┐рдХрддрдо рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рдХреЛ рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдорд╣рд░реВрдХреЛ рд╕реВрдЪреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрдЫред рд╣рд╛рдореАрд▓реЗ "рд╕реНрдЯреНрд░рд┐рдореНрд╕ рдорд╛рдЗрд╕реНрдЯреНрд░рд┐рдо реж" рд▓реЗрдЦреНрдпреМрдВ - рд╣рд╛рдореА рдорд╛рдЗрд╕реНрдЯреНрд░рд┐рдо рд╕реНрдЯреНрд░рд┐рдордХрд╛ рд╕рдмреИ рд░реЗрдХрд░реНрдбрд╣рд░реВ "реж-реж" рднрдиреНрджрд╛ рдареВрд▓реЛ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рдХреЛ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВред рддрдкрд╛рдИрдВрд▓реЗ рдЙрджрд╛рд╣рд░рдгрдмрд╛рдЯ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЖрджреЗрд╢рд▓реЗ рдереНрд░реЗрдбрдХреЛ рдирд╛рдо рдлрд░реНрдХрд╛рдЙрдБрдЫ рдХрд┐рдирднрдиреЗ рд╣рд╛рдореА рдПрдХреИ рд╕рдордпрдорд╛ рдзреЗрд░реИ рдереНрд░реЗрдбрд╣рд░реВрдХреЛ рд╕рджрд╕реНрдпрддрд╛ рд▓рд┐рди рд╕рдХреНрдЫреМрдВред рд╣рд╛рдореА рд▓реЗрдЦреНрди рд╕рдХреНрдЫреМрдВ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, "рд╕реНрдЯреНрд░реАрдореНрд╕ рдорд╛рдИрд╕реНрдЯреНрд░реАрдо рдЕрдиреНрдпрд╕реНрдЯреНрд░реАрдо реж реж"ред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рд╕реНрдЯреНрд░рд┐рдореНрд╕ рд╡рд┐рдХрд▓реНрдк рдкрдЫрд┐ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рд╕рдмреИ рдЖрд╡рд╢реНрдпрдХ рд╕реНрдЯреНрд░рд┐рдорд╣рд░реВрдХреЛ рдирд╛рдо рд░ рддреНрдпрд╕рдкрдЫрд┐ рдорд╛рддреНрд░ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рд╕реВрдЪреА рдкреНрд░рджрд╛рди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рдпрд╕ рд╕рд░рд▓ рдлрд╛рд░рдордорд╛ рдЖрджреЗрд╢рд▓реЗ рддреБрд▓рдирд╛рдорд╛ рдХреЗрд╣рд┐ рд╡рд┐рд╢реЗрд╖ рдЧрд░реНрджреИрди XRANGEред рдпрджреНрдпрдкрд┐, рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдХреБрд░рд╛ рдпреЛ рд╣реЛ рдХрд┐ рд╣рд╛рдореА рд╕рдЬрд┐рд▓реИ рдШреБрдореНрди рд╕рдХреНрдЫреМрдВ XREAD рдЕрд╡рд░реБрджреНрдз рдЖрджреЗрд╢рдорд╛, BLOCK рддрд░реНрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджреИ:

> XREAD BLOCK 0 STREAMS mystream $

рдорд╛рдерд┐рдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛, рдирдпрд╛рдБ рдмреНрд▓рдХ рд╡рд┐рдХрд▓реНрдк реж рдорд┐рд▓рд┐рд╕реЗрдХреЗрдиреНрдбрдХреЛ рдЯрд╛рдЗрдордЖрдЙрдЯрд╕рдБрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ (рдпрд╕рдХреЛ рдЕрд░реНрде рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓рд╕рдореНрдо рдкрд░реНрдЦрдиреБ рд╣реЛ)ред рдпрд╕рдмрд╛рд╣реЗрдХ, рд╕реНрдЯреНрд░рд┐рдо mystream рдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╛рдорд╛рдиреНрдп рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рдкрд╛рд╕ рдЧрд░реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ $ рдкрд╛рд░рд┐рдд рдЧрд░рд┐рдпреЛред рдпреЛ рд╡рд┐рд╢реЗрд╖ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рднрдиреЗрдХреЛ рд╣реЛ XREAD mystream рдорд╛ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рдХреЛ рд░реВрдкрдорд╛ рдЕрдзрд┐рдХрддрдо рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫред рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ рд╕реБрдиреНрди рдерд╛рд▓реЗрдХреЛ рдХреНрд╖рдгрдмрд╛рдЯ рдорд╛рддреНрд░ рдирдпрд╛рдБ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫреМрдВред рдХреЗрд╣рд┐ рддрд░рд┐рдХрд╛рдорд╛ рдпреЛ рдпреБрдирд┐рдХреНрд╕ "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" with pending messages  
|       1292309234234-4                          
|       1292309234232-8                          
|    "consumer-42" with pending messages 
|       ... (and so forth)                             
+----------------------------------------+

рдЕрдм рдпреЛ рдЙрдкрднреЛрдХреНрддрд╛ рд╕рдореВрд╣ рдХреЛ рд▓рд╛рдЧрд┐ рдореБрдЦреНрдп рдЖрджреЗрд╢ рд╕рдВрдЧ рдкрд░рд┐рдЪрд┐рдд рд╣реБрди рд╕рдордп рд╣реЛ, рдЕрд░реНрдерд╛рддреН:

  • XGROUP рд╕рдореВрд╣рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди, рдирд╖реНрдЯ рдЧрд░реНрди рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдпреЛ
  • XREADGROUP рд╕рдореВрд╣ рдорд╛рд░реНрдлрдд рд╕реНрдЯреНрд░рд┐рдо рдкрдвреНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдпреЛ
  • XACK - рдпреЛ рдЖрджреЗрд╢рд▓реЗ рдЧреНрд░рд╛рд╣рдХрд▓рд╛рдИ рд╕рдиреНрджреЗрд╢рд▓рд╛рдИ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдПрдХреЛ рд░реВрдкрдорд╛ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЙрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ

рдЙрдкрднреЛрдХреНрддрд╛ рд╕рдореВрд╣рдХреЛ рдирд┐рд░реНрдорд╛рдг

рдорд╛рдиреМрдВ рдХрд┐ mystream рдкрд╣рд┐рд▓реЗ рдиреИ рдЕрд╡рд╕реНрдерд┐рдд рдЫред рддреНрдпрд╕рдкрдЫрд┐ рд╕рдореВрд╣ рдирд┐рд░реНрдорд╛рдг рдЖрджреЗрд╢ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

> XGROUP CREATE mystream mygroup $
OK

рд╕рдореВрд╣ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛, рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рдкрд╛рд╕ рдЧрд░реНрдиреБрдкрд░реНрдЫ, рдЬрд╕рдмрд╛рдЯ рд╕рдореВрд╣рд▓реЗ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫред рдпрджрд┐ рд╣рд╛рдореА рд╕рдмреИ рдирдпрд╛рдБ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ рднрдиреЗ, рд╣рд╛рдореА рд╡рд┐рд╢реЗрд╖ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ $ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ (рдорд╛рдерд┐рдХреЛ рд╣рд╛рдореНрд░реЛ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдЬрд╕реНрддреИ)ред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рд╡рд┐рд╢реЗрд╖ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рдХреЛ рд╕рдЯреНрдЯрд╛ реж рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рдереНрд░реЗрдбрдХрд╛ рд╕рдмреИ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рд╕рдореВрд╣рдорд╛ рдЙрдкрд▓рдмреНрдз рд╣реБрдиреЗрдЫрдиреНред

рдЕрдм рдЬрдм рд╕рдореВрд╣ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ, рд╣рд╛рдореА рддреБрд░реБрдиреНрддреИ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкрдвреНрди рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ 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"

рдорд╛рдерд┐рдХреЛ рдЖрджреЗрд╢ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╢рдмреНрджрд╢рдГ рдкрдвреНрдЫ:

"рдо, рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░ рдПрд▓рд┐рд╕, рдорд╛рдЗрдЧреНрд░реБрдкрдХреЛ рд╕рджрд╕реНрдп, рдореЗрд░реЛ рд╕реНрдЯреНрд░рд┐рдордмрд╛рдЯ рдПрдЙрдЯрд╛ рд╕рдиреНрджреЗрд╢ рдкрдвреНрди рдЪрд╛рд╣рдиреНрдЫреБ рдЬреБрди рдкрд╣рд┐рд▓реЗ рдХрд╕реИрд▓рд╛рдИ рдкреБрд░реНтАНрдпрд╛рдЗрдПрдХреЛ рдерд┐рдПрдиред"

рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рдПрдХ рд╕рджрд╕реНрдпрд▓реЗ рд╕рдореВрд╣рдорд╛ рдЕрдкрд░реЗрд╢рди рдЧрд░реНрджрдЫ, рдЙрд╕рд▓реЗ рд╕рдореВрд╣ рднрд┐рддреНрд░ рдЖрдлреИрд▓рд╛рдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдкрдорд╛ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрджреИ, рдЖрдлреНрдиреЛ рдирд╛рдо рдкреНрд░рджрд╛рди рдЧрд░реНрдиреБрдкрд░реНрдЫред рдорд╛рдерд┐рдХреЛ рдЖрджреЗрд╢рдорд╛ рдПрдЙрдЯрд╛ рдзреЗрд░реИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рдЫ - рд╡рд┐рд╢реЗрд╖ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ ">"ред рдпреЛ рд╡рд┐рд╢реЗрд╖ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рд▓реЗ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдлрд┐рд▓реНрдЯрд░ рдЧрд░реНрджрдЫ, рдЬреБрди рдкрд╣рд┐рд▓реЗ рдХрд╣рд┐рд▓реНрдпреИ рдбреЗрд▓рд┐рднрд░ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдПрдиред

рд╕рд╛рдереИ, рд╡рд┐рд╢реЗрд╖ рдЕрд╡рд╕реНрдерд╛рдорд╛, рддрдкрд╛рдИрд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЬрд╕реНрддреИ реж рд╡рд╛ рдХреБрдиреИ рдЕрдиреНрдп рдорд╛рдиреНрдп рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ред рдпрд╕ рдорд╛рдорд▓рд╛ рдорд╛ рдЖрджреЗрд╢ 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

рдЕрд╕рдлрд▓рддрд╛ рд░рд┐рдХрднрд░реА

рдЧреНрд░рд╛рд╣рдХрд▓реЗ рдЕрд╕рдлрд▓рддрд╛рдмрд╛рдЯ рдкреБрди: рдкреНрд░рд╛рдкреНрддрд┐ рдЧрд░реНрди рд╕рдХреНрдЫ рд░ "рдкреЗрдиреНрдбрд┐рдЩ" рд╕реНрдерд┐рддрд┐рдХреЛ рд╕рд╛рде рд╕рдиреНрджреЗрд╢рд╣рд░реВрдХреЛ рд╕реВрдЪреА рдкреБрди: рдкрдвреНрди рд╕рдХреНрдЫред рдпрджреНрдпрдкрд┐, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрд╕рд╛рд░рдорд╛, рдЧреНрд░рд╛рд╣рдХрд╣рд░реВ рдЕрдиреНрддрддрдГ рдЕрд╕рдлрд▓ рд╣реБрди рд╕рдХреНрдЫрдиреНред рдпрджрд┐ рдЧреНрд░рд╛рд╣рдХ рдЕрд╕рдлрд▓рддрд╛рдмрд╛рдЯ рдкреБрди: рдкреНрд░рд╛рдкреНрддрд┐ рдЧрд░реНрди рдЕрд╕рдорд░реНрде рдЫ рднрдиреЗ рдЧреНрд░рд╛рд╣рдХрдХреЛ рдЕрдбреНрдХрд┐рдПрдХрд╛ рд╕рдиреНрджреЗрд╢рд╣рд░реВрд▓рд╛рдИ рдХреЗ рд╣реБрдиреНрдЫ?
рдЙрдкрднреЛрдХреНрддрд╛ рд╕рдореВрд╣рд▓реЗ рдПрдЙрдЯрд╛ рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ рдЬреБрди рдХреЗрд╡рд▓ рддреНрдпрд╕реНрддрд╛ рдХреЗрд╕рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ - рдЬрдм рддрдкрд╛рдЗрдБ рд╕рдиреНрджреЗрд╢рд╣рд░реВрдХреЛ рдорд╛рд▓рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреНрдЫред

рддрдкрд╛рдИрд▓реЗ рдЧрд░реНрдиреБ рдкрд░реНрдиреЗ рдкрд╣рд┐рд▓реЛ рдХреБрд░рд╛ рднрдиреЗрдХреЛ рдЖрджреЗрд╢рд▓рд╛рдИ рдХрд▓ рдЧрд░реНрдиреБ рд╣реЛ 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}

рдпреЛ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рд╣рд╛рдореАрд▓реЗ рдорд╛рд▓рд┐рдХрд▓рд╛рдИ {рдЙрдкрднреЛрдХреНрддрд╛} рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрд░ рдЕрдЭреИ рдкреНрд░рд╢реЛрдзрди рдирдЧрд░рд┐рдПрдХреЛ "рд╡рд┐рджреЗрд╢реА" рд╕рдиреНрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдпрджреНрдпрдкрд┐, рд╣рд╛рдореА рдиреНрдпреВрдирддрдо рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╕рдордп {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 рд╡рд┐рдХрд▓реНрдк рд╕рдиреНрджреЗрд╢ ID рд╣рд░реВ рдорд╛рддреНрд░ рдлрд░реНрдХрд╛рдЙрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╕рдиреНрджреЗрд╢рдХреЛ рд╡рд┐рд╡рд░рдгрд╣рд░реВрдорд╛ рд░реБрдЪрд┐ рд░рд╛рдЦреНрдиреБрд╣реБрдиреНрди рд░ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рджрд░реНрд╢рди рдмрдврд╛рдЙрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ рдпреЛ рдЙрдкрдпреЛрдЧреА рдЫред

рдбреЗрд▓рд┐рднрд░реА рдХрд╛рдЙрдиреНрдЯрд░

рддрдкрд╛рдИрдВрд▓реЗ рдЖрдЙрдЯрдкреБрдЯрдорд╛ рджреЗрдЦреНрдиреБрднрдПрдХреЛ рдХрд╛рдЙрдиреНрдЯрд░ 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 рд╕рдиреНрджреЗрд╢ рдмреНрд░реЛрдХрд░рд╣рд░реВ, рд╕рдиреНрджреЗрд╢ рд▓рд╛рдЗрдирд╣рд░реВ, рдПрдХреАрдХреГрдд рд▓рдЧрд┐рдЩ, рд░ рдЗрддрд┐рд╣рд╛рд╕ рд░рд╛рдЦреНрдиреЗ рдЪреНрдпрд╛рдЯ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЖрджрд░реНрд╢ рд╣реЛред

рдореИрд▓реЗ рдПрдХрдкрдЯрдХ рднрдиреЗрдЭреИрдВ Niklaus Wirth, рдкреНрд░реЛрдЧреНрд░рд╛рдорд╣рд░реВ рдПрд▓реНрдЧреЛрд░рд┐рджрдорд╣рд░реВ рд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рд╣рд░реВ рд╣реБрдиреН, рд░ Redis рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рджреБрдмреИ рджрд┐рдиреНрдЫред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди