рд░реЗрдбрд┐рд╕ рдмреЗрд╕реНрдЯ рдкреНрд░реИрдХреНрдЯрд┐рд╕, рднрд╛рдЧ 2

рд░реЗрдбрд┐рд╕ рд▓реИрдмреНрд╕ рд╕реЗ рд░реЗрдбрд┐рд╕ рдмреЗрд╕реНрдЯ рдкреНрд░реИрдХреНрдЯрд┐рд╕ рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рдЪрдХреНрд░ рдХрд╛ рджреВрд╕рд░рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рдкреИрдЯрд░реНрди рдФрд░ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдкреИрдЯрд░реНрди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИред

рдкрд╣рд▓рд╛ рднрд╛рдЧ рдпрд╣рд╛рдБ рд╣реИ ред

рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдкреИрдЯрд░реНрди


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

  • рдШрдЯрдирд╛рдУрдВ рдХреА рдХрддрд╛рд░;
  • рд░реЗрдбрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдЕрд╡рд░реБрджреНрдз;
  • рдкрдм / рдЙрдк;
  • рд╡рд┐рддрд░рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдоред

рдШрдЯрдирд╛ рдХрддрд╛рд░


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

рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рдЖрдЬреНрдЮрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдмрд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ "рдЕрд╡рд░реБрджреНрдз" рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред "рдмреНрд▓реЙрдХрд┐рдВрдЧ" рд╢рдмреНрдж рдХреЗрд╡рд▓ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдз рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рдХрдорд╛рдВрдб рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рддрдм рддрдХ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рд╕реВрдЪреА рдореЗрдВ рдХреЛрдИ рдореВрд▓реНрдп рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рдЬрдм рддрдХ рдХрд┐ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реА рд░реЗрдбрд┐рд╕ рдХреЛ рдкрд░рд╛рдЧрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЪреВрдБрдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдпрд╣ рдПрдХ рдореВрд▓реНрдп рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ, рд╣рдореЗрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдЦреБрд▓реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
#рдЧреНрд░рд╛рд╣рдХ 1рдЧреНрд░рд╛рд╣рдХ реи
1
> BRPOP my-q 0
[рдореВрд▓реНрдп рдХреА рдЙрдореНрдореАрдж]
2
> LPUSH my-q hello
(integer) 1
1) "my-q"
2) "hello"
[рдЧреНрд░рд╛рд╣рдХ рдЦреБрд▓рд╛, рдЖрдЬреНрдЮрд╛ рдорд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░]
3
> BRPOP my-q 0
[рдореВрд▓реНрдп рдХреА рдЙрдореНрдореАрдж]

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЪрд░рдг 1 рдореЗрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЕрд╡рд░реБрджреНрдз рдХреНрд▓рд╛рдЗрдВрдЯ рддреБрд░рдВрдд рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЕрдВрддрд┐рдо рддрд░реНрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рд╣реИред рдпрд╣рд╛рдБ 0 рдХрд╛ рдЕрд░реНрде рд╣реИ рдЕрдирдиреНрдд рдЕрдкреЗрдХреНрд╖рд╛ред рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ , рдПрдХ рдорд╛рди my-q рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдФрд░ рдкрд╣рд▓рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рддреБрд░рдВрдд рдЕрд╡рд░реБрджреНрдз рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИред рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ рдкрд░, рдмреАрдЖрд░рдкреАрдУрдкреА рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЖрдк рдЖрд╡реЗрджрди рдореЗрдВ рд▓реВрдк рдореЗрдВ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдФрд░ рдЧреНрд░рд╛рд╣рдХ рднреА рдЕрдЧрд▓реЗ рдореВрд▓реНрдп рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред "Ctrl + C" рджрдмрд╛рдХрд░ рдЖрдк рд▓реЙрдХ рдХреЛ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдЪрд▓реЛ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЙрд▓рдЯрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ BRPOP рдПрдХ рдЧреИрд░-рд░рд┐рдХреНрдд рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
#рдЧреНрд░рд╛рд╣рдХ 1рдЧреНрд░рд╛рд╣рдХ реи
1
> LPUSH my-q hello
(integer) 1
2
> LPUSH my-q hej
(integer) 2
3
> LPUSH my-q bonjour
(integer) 3
4
> BRPOP my-q 0
1) "my-q"
2) "hello"
5
> BRPOP my-q 0
1) "my-q"
2) "hej"
6
> BRPOP my-q 0
1) "my-q"
2) "bonjour"
7
> BRPOP my-q 0
[рдореВрд▓реНрдп рдХреА рдЙрдореНрдореАрдж]

рдЪрд░рдг 1-3 рдореЗрдВ, рд╣рдо рд╕реВрдЪреА рдореЗрдВ 3 рдорд╛рди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЙрддреНрддрд░ рдмрдврд╝рддрд╛ рд╣реИ, рд╕реВрдЪреА рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЪрд░рдг 4, BRPOP рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рддреБрд░рдВрдд рдореВрд▓реНрдп рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрд╡рд░реБрджреНрдз рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗрд╡рд▓ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХрддрд╛рд░ рдореЗрдВ рдХреЛрдИ рдорд╛рди рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рд╣рдо 5-6 рдЪрд░рдгреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрддрд╛рд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪрд░рдг 7 рдореЗрдВ, BRPOP рдХрддрд╛рд░ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдвреВрдВрдврддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рддрдм рддрдХ рдмреНрд▓реЙрдХ рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХреБрдЫ рдЬреЛрдбрд╝рд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдХреНрд╕рд░ рдХрддрд╛рд░реЗрдВ рдХреБрдЫ рдРрд╕реЗ рдХрд╛рдо рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдХрд╛рд░реНрдпрдХрд░реНрддрд╛) рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрднрд╛рд░ рдореЗрдВ, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрджрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЧрд┐рд░рддрд╛ рд╣реИ рддреЛ рдХрд╛рдо рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд░реЗрдбрд┐рд╕ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдХрддрд╛рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, BRPOP рдХреЗ рдмрдЬрд╛рдп BRPOPLPUSH рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╡рд╣ рдПрдХ рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬреИрд╕реЗ рд╣реА рдпрд╣ рд╡рд╣рд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рдЗрд╕реЗ рджреВрд╕рд░реА рд╕реВрдЪреА рдореЗрдВ рдбрд╛рд▓ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдкрд░рдорд╛рдгреБ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреЛ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдореВрд▓реНрдп рдмрджрд▓рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
#рдЧреНрд░рд╛рд╣рдХ 1рдЧреНрд░рд╛рд╣рдХ реи
1
> LINDEX worker-q 0
(nil)
2[рдпрджрд┐ рдкрд░рд┐рдгрд╛рдо рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЪрд░рдг 4 рдкрд░ рдЬрд╛рдПрдВ]
3
> LREM worker-q -1 [   1]
(integer) 1
[рдЪрд░рдг 1 рдкрд░ рд▓реМрдЯреЗрдВ]
4
> BRPOPLPUSH my-q worker-q 0
[рдореВрд▓реНрдп рдХреА рдЙрдореНрдореАрдж]
5
> LPUSH my-q hello
"hello"
[рдЧреНрд░рд╛рд╣рдХ рдЦреБрд▓рд╛, рдЖрдЬреНрдЮрд╛ рдорд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░]
6[рд╕рдВрднрд╛рд▓реЛ]
7
> LREM worker-q -1 hello
(integer) 1
8[рдЪрд░рдг 1 рдкрд░ рд▓реМрдЯреЗрдВ]

1-2 рдЪрд░рдгреЛрдВ рдореЗрдВ, рд╣рдо рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛-рдХреНрдпреВ рдЦрд╛рд▓реА рд╣реИред рдпрджрд┐ рдХреБрдЫ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╕реЗ рдЪрд░рдг 1 рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдХреБрдЫ рдХрддрд╛рд░ рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреА рдХрддрд╛рд░ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рдЪрд░рдг 4 рдореЗрдВ, рд╣рдо рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдореВрд▓реНрдп рдореЗрд░реА-рдХреНрдпреВ рдореЗрдВ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ , рдФрд░ рдЬрдм рдпрд╣ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛-рдХреНрдпреВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдлрд┐рд░ рд╣рдо рдХрд┐рд╕реА рддрд░рд╣ "рд╣реИрд▓реЛ" рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ , рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдЗрд╕реЗ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛-рдХреНрдпреВ рд╕реЗ рд╣рдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЪрд░рдг 1 рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВред рдпрджрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд░рдг 6 рдореЗрдВ рдорд░ рдЬрд╛рддреА рд╣реИ, рддреЛ рдореВрд▓реНрдп рдЕрднреА рднреА рдХрд╛рд░реНрдпрдХрд░реНрддрд╛-рдХреНрдпреВ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ ред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЪрд░рдг 7 рдореЗрдВ рд╣рдЯрд╛рдП рдЧрдП рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рддреБрд░рдВрдд рд╣рдЯрд╛ рджреЗрдВрдЧреЗред

рдпрд╣ рдкреИрдЯрд░реНрди рдиреМрдХрд░реА рдХреЗ рдиреБрдХрд╕рд╛рди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЕрдЧрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЪрд░рдг 2 рдФрд░ 3 рдпрд╛ 5 рдФрд░ 6 рдХреЗ рдмреАрдЪ рдорд░ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЗ рддрд░реНрдХ рдореЗрдВ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдЧрд╛ред

рд░реЗрдбрд▓реЙрдХ рдХреЗ рд╕рд╛рде рд▓реЙрдХ рдХрд░реЗрдВ


рдХрднреА-рдХрднреА рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреБрдЫ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрд╡рд░реЛрдзрдХ рдЙрджреНрджреЗрд╢реНрдп:

  • рд╕рдВрд╕рд╛рдзрди рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдВ;
  • рд▓реЙрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдордЬрд╝рдмреВрддреА рд╕реЗ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛;
  • рд╕рдВрд╕рд╛рдзрди рдХреЛ рдХрд╕рдХрд░ рд▓реЙрдХ рди рдХрд░реЗрдВ (рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рдзрд┐ рдХреЗ рдмрд╛рдж рдЕрдирд▓реЙрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред

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

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ Redlock рдХреЛ рдХрдо рд╕реЗ рдХрдо 3 рдорд╢реАрдиреЛрдВ рдкрд░ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ Redis рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЗ рд▓реЙрдХрд┐рдВрдЧ рддрдВрддреНрд░ рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдПрдХрд▓ рдмрд┐рдВрджреБ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕рднреА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЧрддрд┐рд░реЛрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдпрджреНрдпрдкрд┐ рдорд╢реАрдиреЛрдВ рдкрд░ рдШрдбрд╝рд┐рдпреЛрдВ рдХреЛ 100% рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдЙрд╕реА рддрд░рд╣ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП - рд╕рдордп рд╕рдорд╛рди рдЧрддрд┐ рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ: рдорд╢реАрди рдкрд░ рдПрдХ рд╕реЗрдХрдВрдб рдФрд░ рдорд╢реАрди рдмреА рдкрд░ рдПрдХ рд╕реЗрдХрдВрдбред

Redlock рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЙрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗрдЯ рдХрд░рдирд╛ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЕрд╡рд░реБрджреНрдз рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рд╕рдВрдХреЗрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░ рдмреНрд▓реЙрдХрд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдорд╛рди рдХреЗ рд╕рд╛рде рдХреБрдВрдЬреА (рд╕реЗрдЯ) рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХреЗрд╡рд▓ рдЕрдЧрд░ рдпрд╣ рдХреБрдВрдЬреА рдЕрднреА рддрдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ) рдФрд░ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рд╕рдордп-рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВред рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд╡рддрдВрддреНрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЙрджрд╛рд╣рд░рдг рдЧрд┐рд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рддреБрд░рдВрдд рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд▓реЙрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЗрд╕реЗ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЙрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдпрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд▓реЙрдХ рдХреА рд╕реНрдерд┐рддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓рд╛ рд╕рдордп рд╣реИ, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд▓реЙрдХ рдЯрд╛рдЗрдо рдХреЛ рдШрдЯрд╛ рджреЗрддрд╛ рд╣реИред рддреНрд░реБрдЯрд┐ рдпрд╛ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░реЗрдВ рдФрд░ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рд▓реЙрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд▓реБрдЖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдпрд╣ рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдХреБрдВрдЬреА рдХреЗ рд╕реЗрдЯ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдореВрд▓реНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЕрдЧрд░ рд╡рд╣рд╛рдБ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдирдП рд▓реЙрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

if redis.call("get",KEYS[1]) == ARGV[1] then
    return redis.call("del",KEYS[1])
else
    return 0
end

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

рдкрдм / рдЙрдк


рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░реЗрдбрд┐рд╕ рдХреЛ рдкрдм / рд╕рдм рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо (рдкреНрд░рдХрд╛рд╢рдХ / рдЧреНрд░рд╛рд╣рдХ) рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреИрдЯрд░реНрди рдореЗрдВ, рдПрдХ рдкреНрд░рдХрд╛рд╢рдХ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЪреИрдирд▓ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд╕рдВрджреЗрд╢ рдЬрд╛рд░реА рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпреЗ "рд╢реЙрдЯ рдФрд░ рднреВрд▓" рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рдВрджреЗрд╢ рд╣реИрдВ, рдпрд╛рдиреА рдпрджрд┐ рд╕рдВрджреЗрд╢ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рдВрджреЗрд╢ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд┐рдирд╛ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдЪреИрдирд▓ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рд╕реЗ, рдЧреНрд░рд╛рд╣рдХ рдЧреНрд░рд╛рд╣рдХ рдореЛрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдм рдЖрджреЗрд╢реЛрдВ рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рдХрд╛рд╢рдХ рдХреЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИред

рдЖрдк рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЪреИрдирд▓реЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо SUBSCRIBE рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЛ рдореМрд╕рдо рдФрд░ рдЦреЗрд▓ рдЪреИрдирд▓реЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

> SUBSCRIBE weather sports
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "weather"
3) (integer) 1
1) "subscribe"
2) "sports"
3) (integer) 2

рдПрдХ рдЕрд▓рдЧ рдХреНрд▓рд╛рдЗрдВрдЯ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ) рдореЗрдВ, рд╣рдо рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдЪреИрдирд▓ рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрджреЗрд╢ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

> PUBLISH sports oilers/7:leafs/1
(integer) 1

рдкрд╣рд▓рд╛ рддрд░реНрдХ рдЪреИрдирд▓ рдХрд╛ рдирд╛рдо рд╣реИ, рджреВрд╕рд░рд╛ рд╕рдВрджреЗрд╢ рд╣реИред рд╕рдВрджреЗрд╢ рдХрд┐рд╕реА рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдЦреЗрд▓ рдореЗрдВ рдПрдХ рдХреЛрдбрд┐рдд рдЦрд╛рддрд╛ рд╣реИред рдЖрджреЗрд╢ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╡рд╣ рдирдВрдмрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╕рдВрджреЗрд╢ рдкрд╣реБрдВрдЪрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЧреНрд░рд╛рд╣рдХ рдЧреНрд░рд╛рд╣рдХ рдореЗрдВ, рд╣рдо рддреБрд░рдВрдд рд╕рдВрджреЗрд╢ рджреЗрдЦрддреЗ рд╣реИрдВ:

1) "message"
2) "sports"
3) "oilers/7:leafs/1"

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рддреАрди рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдВрджреЗрд╢ рд╣реИ, рдПрдХ рд╕рджрд╕реНрдпрддрд╛ рдЪреИрдирд▓ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рд╕рдВрджреЗрд╢ рд╣реИред рдЧреНрд░рд╛рд╣рдХ рдЪреИрдирд▓ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдЯрд░реНрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рджред

рдкреНрд░рдХрд╛рд╢рдХ рдХреЗ рдкрд╛рд╕ рд▓реМрдЯрдХрд░, рд╣рдо рдПрдХ рдФрд░ рд╕рдВрджреЗрд╢ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

> PUBLISH weather snow/-4c
(integer) 1

рдЧреНрд░рд╛рд╣рдХ рдореЗрдВ рд╣рдо рдПрдХ рд╣реА рдкреНрд░рд╛рд░реВрдк рджреЗрдЦреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдЪреИрдирд▓ рдХреЗ рд╕рд╛рде:

1) "message"
2) "weather"
3) "snow/-4c"

рдЖрдЗрдП рдПрдХ рдЪреИрдирд▓ рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЧреНрд░рд╛рд╣рдХ рдирд╣реАрдВ рд╣реИрдВ:

> PUBLISH currency CADUSD/0.787
(integer) 0

рдЪреВрдВрдХрд┐ рдХреЛрдИ рднреА рдореБрджреНрд░рд╛ рдЪреИрдирд▓ рдирд╣реАрдВ рд╕реБрди рд░рд╣рд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП рдЙрддреНрддрд░ 0. рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рдВрджреЗрд╢ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЬреЛ рдЧреНрд░рд╛рд╣рдХ рдЗрд╕ рдЪреИрдирд▓ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧреА - рдпрд╣ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рднреВрд▓ рдЧрдпрд╛ рдерд╛ред

рдПрдХрд▓ рдЪреИрдирд▓ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, Redis рдорд╛рд╕реНрдХ рджреНрд╡рд╛рд░рд╛ рдЪреИрдирд▓реЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЧреНрд▓реЛрдм-рд╕реНрдЯрд╛рдЗрд▓ рдорд╛рд╕реНрдХ рдХреЛ PSUBSCRIBE рдХрдорд╛рдВрдб рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

> PSUBSCRIBE sports:*

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

> PUBLISH sports:hockey oilers/7:leafs/1
(integer) 1
> PUBLISH sports:basketball raptors/33:pacers/7
(integer) 1
> PUBLISH weather:edmonton snow/-4c
(integer) 0

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

1) "pmessage"
2) "sports:*"
3) "sports:hockey"
4) "oilers/7:leafs/1"
1) "pmessage"
2) "sports:*"
3) "sports:basketball"
4) "raptors/33:pacers/7"

рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ SUBSCRIBE рдХрдорд╛рдВрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдорд╛рд╕реНрдХ рд╣реА рд╣реЛрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЪреИрдирд▓ рдХрд╛ рдЕрд╕рд▓реА рдирд╛рдо рднреА рд╣реЛрддрд╛ рд╣реИред

рд╡рд┐рддрд░рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо


рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рддрд░рд┐рдд рдШрдЯрдирд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдбрд┐рд╕ рдХреА рдкрдм / рдЙрдк рд╕рдВрджреЗрд╢ рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрдм рдПрдХ рдПрдХрд▓ рдХреНрд╖реЗрддреНрд░ рдЧреНрд░рд╛рд╣рдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛред рд╣рдо рдореБрдЦреМрдЯрд╛ рджреНрд╡рд╛рд░рд╛ рдЪреИрдирд▓реЛрдВ рдХреЛ рд╕реБрдиреЗрдВрдЧреЗ рдФрд░ рд╣реИрд╢ рдХреЛ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд┐рдХрд╛рд▓реЗрдВрдЧреЗ ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо 5-9 рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде update_status рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ ред

> PSUBSCRIBE update_status:[5-9]
1) "psubscribe"
2) "update_status:[5-9]"
3) (integer) 1
...

рд╕реНрдерд┐рддрд┐ / error_level рдорд╛рди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП , рд╣рдореЗрдВ рджреЛ рдЖрджреЗрд╢реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдпрд╛ MULTI / MEC рдмреНрд▓реЙрдХ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдХрдорд╛рдВрдб рд╕реНрддрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣реА рдЪреИрдирд▓ рдореЗрдВ рдЗрдирдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди рд╣реЛрддрд╛ рд╣реИред

> HSET status error_level 5
(integer) 1
> PUBLISH update_status:5 0
(integer) 1

рдкрд╣рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ HGETALL рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

...
1) "pmessage"
2) "update_status:[5-9]"
3) "update_status:5"
4) "0"

> HGETALL status
1) "error_level"
2) "5"

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

рдкрдм / рд╕рдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рдкреИрдЯрд░реНрди рдмреЗрд╣рддрд░ рдХреНрдпреЛрдВ рд╣реИ? рдЬрдм рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рдкреВрд░реЗ рд░рд╛рдЬреНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕реБрдирдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг рдкреИрдЯрд░реНрди


рд░реЗрдбрд┐рд╕ рдореЗрдВ рд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреИрдЯрд░реНрди рд╣реИрдВред рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ:

  • JSON рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ;
  • рднрдВрдбрд╛рд░рдг - рд╕реБрд╡рд┐рдзрд╛рдПрдБред

JSON рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣рдг


Redis рдореЗрдВ JSON рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╡рд╕реНрддреБ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛ рдФрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХреБрдВрдЬреА рдХреЗ рддрд╣рдд рд╕рд╣реЗрдЬрдирд╛ рд╣реИ:

> SET car "{\"colour\":\"blue\",\"make\":\"saab\",\"model\":93,\"features\":[\"powerlocks\",\"moonroof\"]}"
OK
> GET car
"{\"colour\":\"blue\",\"make\":\"saab\",\"model\":93,\"features\":[\"powerlocks\",\"moonroof\"]}"

рдпрд╣ рд╕рд░рд▓ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреБрдЫ рдмрд╣реБрдд рд╣реА рдЧрдВрднреАрд░ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ:

  • рдХреНрд░рдорд╛рдВрдХрди рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд▓реЗрддрд╛ рд╣реИ;
  • JSON рдкреНрд░рд╛рд░реВрдк рдбреЗрдЯрд╛ рдХрд╛ рдЖрдХрд╛рд░ рдмрдврд╝рд╛рддрд╛ рд╣реИ;
  • рд░реЗрдбрд┐рд╕ рдХреЗ рдкрд╛рд╕ JSON рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рддрд░реАрдХрд╛ рд╣реИред

рдбреЗрдЯрд╛ рдХреА рдЫреЛрдЯреА рдорд╛рддреНрд░рд╛ рдкрд░ рдЕрдВрдХреЛрдВ рдХреА рдкрд╣рд▓реА рдЬреЛрдбрд╝реА рдирдЧрдгреНрдп рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдбреЗрдЯрд╛ рдмрдврд╝рддрд╛ рд╣реИ, рд▓рд╛рдЧрдд рдмрдврд╝реЗрдЧреАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рддреАрд╕рд░рд╛ рдмрд┐рдВрджреБ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

Redis 4.0 рд╕реЗ рдкрд╣рд▓реЗ, Redis рдХреЗ рдЕрдВрджрд░ JSON рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ cjson рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ Lua рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ред рдЗрд╕рдиреЗ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрднреА рднреА рдПрдХ рдЕрдбрд╝рдЪрди рдмрдирд╛ рд░рд╣рд╛ рдФрд░ рд▓реБрдЖ рдХреЛ рд╕реАрдЦрдиреЗ рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░реЗрд╢рд╛рдиреА рдкреИрджрд╛ рдХреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╕рдВрдкреВрд░реНрдг JSON рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ, рдЗрд╕реЗ deserialized рдХрд┐рдпрд╛, рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛, рд╡рд╛рдкрд╕ serialized рдХрд┐рдпрд╛, рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╕рд╣реЗрдЬрд╛ред рдпрд╣ рдПрдХ рдПрдВрдЯреАрдкреИрдЯрд░реНрди рд╣реИред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбреЗрдЯрд╛ рдЦреЛрдиреЗ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдЬреЛрдЦрд┐рдо рд╣реИред

#рдЖрд╡реЗрджрди рдЙрджрд╛рд╣рд░рдг # 1рдЖрд╡реЗрджрди рдЙрджрд╛рд╣рд░рдг # 2
1
> GET my-car
2[deserialize, рдорд╢реАрди рд░рдВрдЧ рдмрджрд▓реЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ]
> GET my-car
3
> SET my-car

[рдЙрджрд╛рд╣рд░рдг # 1 рд╕реЗ рдирдпрд╛ рдореВрд▓реНрдп]
[deserialize, рдорд╢реАрди рдореЙрдбрд▓ рдмрджрд▓реЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ]
4
> SET my-car

[рдЙрджрд╛рд╣рд░рдг # 2 рд╕реЗ рдирдпрд╛ рдореВрд▓реНрдп]
5
> GET my-car

рд▓рд╛рдЗрди 5 рдкрд░ рдкрд░рд┐рдгрд╛рдо рдХреЗрд╡рд▓ рдЙрджрд╛рд╣рд░рдг 2 рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рджрд┐рдЦрд╛рдПрдЧрд╛, рдФрд░ рдЙрджрд╛рд╣рд░рдг 1 рд╕реЗ рд░рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдЦреЛ рдЬрд╛рдПрдЧрд╛ред

Redis рд╕рдВрд╕реНрдХрд░рдг 4.0 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред ReJSON рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рд╕рдВрдкрд░реНрдХ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢ рджреЗрддрд╛ рд╣реИред ReJSON рдбреЗрдЯрд╛ рдХреЛ рдмрд╛рдЗрдирд░реА рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рд╕реЗрд╡ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдбреЗрдЯрд╛ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рдбреЗ / рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬреЗрд╢рди рдкрд░ рд╕рдордп рдЦрд░реНрдЪ рдХрд┐рдП рдмрд┐рдирд╛ рддрддреНрд╡реЛрдВ рддрдХ рддреЗрдЬреА рд╕реЗ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

ReJSON рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ Redis рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдЗрд╕реЗ Redis Enterprise рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд░реЗрдЬрд╕рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд┐рдЫрд▓рд╛ рдЙрджрд╛рд╣рд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

#рдЖрд╡реЗрджрди рдЙрджрд╛рд╣рд░рдг # 1рдЖрд╡реЗрджрди рдЙрджрд╛рд╣рд░рдг # 2
1
> JSON.SET car2 . '{"colour": "blue",  "make":"saab", "model":93,  "features": ["powerlocks",  "moonroof"]}тАШ
OK
2
> JSON.SET car2 colour '"red"'
OK
3
> JSON.SET car2 model '95'
OK
> JSON.GET car2 .
"{\"colour\":\"red",\"make\":\"saab\",\"model\":95,\"features\":[\"powerlocks\",\"moonroof\"]}"

ReJSON рд░реЗрдбрд┐рд╕ рдореЗрдВ JSON рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд, рддреЗрдЬ рдФрд░ рдЕрдзрд┐рдХ рд╕рд╣рдЬ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдиреЗрд╕реНрдЯреЗрдб рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рдорд╛рдгреБ рдкрд░рд┐рд╡рд░реНрддрди рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред

рд╡рд╕реНрддреБ рд╕рдВрдЧреНрд░рд╣рдг


рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдорд╛рдирдХ Redis "рд╣реИрд╢ рдЯреЗрдмрд▓" рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдмрд╣реБрдд JSON рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдорд╛рди рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдЦреЗрддреЛрдВ рдХреЛ рдпрд╛ рддреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдмрдирд╛рдирд╛ рдФрд░ рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рд░реЛрдХрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП "рдкрде" рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ "рд╕рдорддрд▓" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд░реЗрдбрд┐рд╕ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред

{
    "colour": "blue",
    "make": "saab",
    "model": {
        "trim": "aero",
        "name": 93
    },
    "features": ["powerlocks", "moonroof"]
}

JSONPath (JSON рдХреЗ рд▓рд┐рдП XPath) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП , рд╣рдо рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рдорд╛рди рд╕реНрддрд░ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

> HSET car3 colour blue
> HSET car3 make saab
> HSET car3 model.trim aero
> HSET car3 model.name 93
> HSET car3 features[0] powerlocks
> HSET car3 features[1] moonroof

рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрджреЗрд╢реЛрдВ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдЪрдПрд╕рдИрдЯреА рдХреЗ рд▓рд┐рдП рдХрдИ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдм рдЖрдк рд╕рдВрдкреВрд░реНрдг рд╡рд╕реНрддреБ рдпрд╛ рдЙрд╕рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

> HGETALL car3
 1) "colour"
 2) "blue"
 3) "make"
 4) "saab"
 5) "model.trim"
 6) "aero"
 7) "model.name"
 8) "93"
 9) "features[0]"
10) "powerlocks"
11) "features[1]"
12) "moonroof"

> HGET car3 model.trim
"aero"

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд░реЗрдбрд┐рд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╡рд╕реНрддреБ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддреНрд╡рд░рд┐рдд рдФрд░ рдЙрдкрдпреЛрдЧреА рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреА рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ:

  • рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ, JSONPath рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЕрд╕рдВрдЧрддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХреЛ рдХреНрд░рдордмрджреНрдз рдФрд░ deserializing рдХреЗ рд▓рд╛рдпрдХ рд╣реИ;
  • рд╕рд░рдгреА рд╕рдорд░реНрдерди:
    • рд╡рд┐рд░рд▓ рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ;
    • рдХрдИ рдСрдкрд░реЗрд╢рди рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рд╕рд░рдгреА рдХреЗ рдмреАрдЪ рдореЗрдВ рдПрдХ рддрддреНрд╡ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ред

  • JSONPath рдХреБрдВрдЬрд┐рдпреЛрдВ рдореЗрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрди рдХреА рдЦрдкрддред

рдпрд╣ рдкреИрдЯрд░реНрди рдмрд╣реБрдд рд╣рдж рддрдХ ReJSON рдЬреИрд╕рд╛ рд╣реИред рдпрджрд┐ ReJSON рдЙрдкрд▓рдмреНрдз рд╣реИ, рддреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдкрд░реЛрдХреНрдд рддрд░реАрдХреЗ рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рд╕реЗ рд░реЗрдЬрд╕рди рдкрд░ рдПрдХ рдлрд╛рдпрджрд╛ рд╣реЛрддрд╛ рд╣реИ: рд░реЗрдбрд┐рд╕ SORT рдЯреАрдо рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдгред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдХрдорд╛рдВрдб рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕ рдкреИрдЯрд░реНрди рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рдПрдХ рдЕрд▓рдЧ рдЬрдЯрд┐рд▓ рд╡рд┐рд╖рдп рд╣реИред

рдЕрдЧрд▓рд╛ рд╕рдорд╛рдкрди рдЦрдВрдб рд╕рдордп рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкреИрдЯрд░реНрди, рдЧрддрд┐ рд╕реАрдорд╛ рдкреИрдЯрд░реНрди, рдмреНрд▓реВрдо рдлрд╝рд┐рд▓реНрдЯрд░ рдкреИрдЯрд░реНрди, рдХрд╛рдЙрдВрдЯрд░ рдФрд░ рд░реЗрдбрд┐рд╕ рдореЗрдВ рд▓реБрдЖ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдЧрд╛ред

PS рдореИрдВрдиреЗ рдЗрди рд▓реЗрдЦреЛрдВ рдХреЗ рдкрд╛рда рдХреЛ "рдмрд░реНрдмрд░" рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдпрдерд╛рд╕рдВрднрд╡ рд░реВрд╕реА рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЕрд╕рдВрдЧрдд рдпрд╛ рдЧрд▓рдд рд╣реИ, рддреЛ рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╣реА рдХрд░реЗрдВред

Source: https://habr.com/ru/post/undefined/


All Articles