Node-redis: рд╣реИрд╢ рдореЗрдВ рд╢реВрдиреНрдп рдорд╛рдиреЛрдВ рдХрд╛ рдХреНрд░рдорд╛рдВрдХрди

рдХреЛ рдирд┐рд░реНрдорд┐рдд 13 рдЬреВрди 2013  ┬╖  19рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: NodeRedis/node-redis

рдЬрдм hset рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯ рдХреА рдЬрд╛ рд░рд╣реА рдХреБрдВрдЬреА рдХрд╛ рдорд╛рди рд╢реВрдиреНрдп рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ "рдирд▓" рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рд╣реИрд╢ рдХреЛ hgetall рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓реМрдЯрд╛рдИ рдЧрдИ рд╡рд╕реНрддреБ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рди рд╢реВрдиреНрдп рдХреЗ рдмрдЬрд╛рдп рд╕реНрдЯреНрд░рд┐рдВрдЧ "рдирд▓" рд╣реЛрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдиреЛрдб-рд░реЗрдбрд┐рд╕ рд░реЗрдбрд┐рд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдВрддрд░рдг рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдорд╛рди рд▓рд┐рдпрд╛ рдерд╛ рдХрд┐ рдмреВрд▓рд┐рдпрди, рд╕рдВрдЦреНрдпрд╛ рдЖрджрд┐ рд╕реНрд╡рддрдГ рд╕рдВрдмрдВрдзрд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░реЗрдВред

рд▓реЗрдХрд┐рди рдСрдЯреЛ рд░реВрдкрд╛рдВрддрд░рдг рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдлрд┐рд░ рднреАред рдЭреВрдареЗ рдорд╛рди рдХреЛ "рдЭреВрдареА" рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рддреНрдп рдЬрд╛рдВрдЪ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдЧреБрдЬрд╝рд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдмрдЧ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдореИрдВрдиреЗ рдЕрднреА рдХрд╛рдлреА рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рд╣реИред

рд╕рднреА 19 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдиреЛрдб-рд░реЗрдбрд┐рд╕ рд░реЗрдбрд┐рд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдВрддрд░рдг рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдорд╛рди рд▓рд┐рдпрд╛ рдерд╛ рдХрд┐ рдмреВрд▓рд┐рдпрди, рд╕рдВрдЦреНрдпрд╛ рдЖрджрд┐ рд╕реНрд╡рддрдГ рд╕рдВрдмрдВрдзрд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░реЗрдВред

рд▓реЗрдХрд┐рди рдСрдЯреЛ рд░реВрдкрд╛рдВрддрд░рдг рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдлрд┐рд░ рднреАред рдЭреВрдареЗ рдорд╛рди рдХреЛ "рдЭреВрдареА" рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рддреНрдп рдЬрд╛рдВрдЪ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдЧреБрдЬрд╝рд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдмрдЧ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдореИрдВрдиреЗ рдЕрднреА рдХрд╛рдлреА рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рд╣реИред

рд╕рд╣реА, рд╕рдЪреНрдЪрд╛/рдЭреВрдард╛ рд╡рд╣реА рд╣реИ рдЬреЛ рдореБрдЭреЗ рднреА рдорд┐рд▓рддрд╛ рд╣реИред

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

@brycebaril рд╣рдо JSON.stringify/parse рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдзреНрд╡рдЬ рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпрд╛ рдЖрдкрдХреЛ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛?

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ createClient рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рд╣реЛред рдХреБрдЫ рдЗрд╕ рддрд░рд╣...
_parse_bool_: "рд╕рддреНрдп" рдХреЛ рд╕рддреНрдп, "рдЭреВрдареЗ" рдХреЛ рдЕрд╕рддреНрдп рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИ
_parse_null_: "рдирд▓" рдХреЛ рдЕрд╢рдХреНрдд рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИ

рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдк "рд╕рддреНрдп" рдФрд░ "рд╢реВрдиреНрдп" рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗ? рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореВрд▓ рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ рдХреНрдпрд╛ рдерд╛ред

@Azmisov рдХреЗ рд░реВрдк рдореЗрдВ @dirkbonhomme рдиреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ JSON.stringify/parse рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

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

@NodeRedis/рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ @dirkbonhomme рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ? :)

@BridgeAR рдореИрдВ рдЕрд╕рд╣рдордд рд╣реВрдБ рдХрд┐ null 'рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рдХреБрдЫ рдЧрд▓рдд рд╣реИ'ред рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓реЗрдВ:

var myIndexes = ['one','two','three'], myMulti = client.multi();

myIndexes.forEach(function(aKey) { 
  myMulti.hget(aKey,'username'); 
  myMulti.hget(aKey,'address1');  
  myMulti.hget(aKey,'address2');
});

myMulti.exec(cb);

рдорд╛рди рд▓реЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рдореЗрдВ 'address2' рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ, рддреЛ null рд░рд┐рдЯрд░реНрди рдареАрдХ рд╣реИред

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

@stockholmux рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЙрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛рдПрдЧрд╛ред

рдореИрдВ рдЬреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ null рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ 'null' рдЗрд╕рдХреЗ рдмрдЬрд╛рдп:

client.set('foo', null);
client.get('foo', function (err, res) {
    console.log(res); // 'null'
});

рдореИрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рддреЛрдбрд╝реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдкреБрд░рд╛рдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ (рдХреБрдЫ рд▓реЛрдЧ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдирд┐рд░реНрдорд╛рдг рдХрд░рдХреЗ рдЯреВрдЯреЗ рд╣реБрдП рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рджрдо рдкрд░ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ v.3.0.0 рдРрд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдПред

рдХреНрдпрд╛ 'рд╢реВрдиреНрдп' рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдпрд╛ рдирд╣реАрдВ?

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

рд╕рд┐рд░реНрдл рдПрдХ рд╕реБрдЭрд╛рд╡ред рдпрд╣ рдореБрджреНрджрд╛ рд╡рд╛рдХрдИ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рд╕рд╛рдЗрдЯ рдХреЗ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдирд╛рдо 'null' рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╢реВрдиреНрдп рдорд╛рди рдкрд░ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ;

рдХреНрдпрд╛ "JSON.{parse,stringify} рдСрди рдЗрдирдкреБрдЯ" рдлрд╝реНрд▓реИрдЧ рдкрд░ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рдпрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП/рд╕реЗрдЯ рддрд░реНрдХ рдХреЗ рдмрдЬрд╛рдп рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдЕрд░реЗ @taylorzane рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдордп рдмрд╣реБрдд рдХрдо рд╕рдордп рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред

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

рдХреНрдпрд╛ рдпрд╣ рдЕрдм рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ?

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

рдпрджрд┐ рдЖрдкрдХреЛ @taylorzane рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдореЗрдВ

@slidenerd рдореИрдВ JSON рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд░реЗрдбрд┐рд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ

рдЙрджрд╛рд╣рд░рдг:

const a = {
  a: {
    b: {
      c: null,
      d: true,
      e: "hello"
    }
  }
}

const b = flatten(a)
console.log(b) /* =>
{
  '/a/b/c': null,
  '/a/b/d': true,
  '/a/b/e': 'hello'
}
*/

Object.entries(b).forEach(([key, value]) => {
  redis.set(key, JSON.stringify(value)) // or
  redis.hset('my_hash', key, JSON.stringify(value)) /*
  => "/a/b/c" -> "null"
  => "/a/b/d" -> "true"
  => "/a/b/e" -> "\"hello\""
  */
})

рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдмреЗрдЭрд┐рдЭрдХ рдореБрдЭрд╕реЗ Gitter рдкрд░ рдпрд╛ рдореЗрд░реА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдИрдореЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВред

@slidenerd рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ JSON рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ReJSON рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ - рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рд╕рдм рдХреБрдЫ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдирд▓ рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд░реЗрдбрд┐рд╕ рдореЙрдбреНрдпреВрд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдРрд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реЛ (4.0+) рдФрд░ рд╕рд░реНрд╡рд░ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдпрд╣ рдЗрд╕ Node.js рдореЙрдбреНрдпреВрд▓ (рдФрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛) рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред

            items.push(JSON.stringify(object, (key, value) => {
                if (value === null || value === undefined) {
                    return undefined
                }
                else {
                    return isNaN(parseFloat(value)) ? value : parseFloat(value)
                }
            }))

рдзрдиреНрдпрд╡рд╛рдж @stockholmux рдореИрдВ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдпрд╛, рд╡рд┐рдЪрд╛рд░ JSON.stringify рд╡рд┐рдзрд┐ рдореЗрдВ рдкреНрд░рддрд┐рдХреГрддрд┐ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рджреВрд╕рд░рд╛ рддрд░реНрдХ рд╣реЛрддрд╛ рд╣реИ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

abhaygarg picture abhaygarg  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gpascale picture gpascale  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lemon707 picture lemon707  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jackycchen picture jackycchen  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

shmendo picture shmendo  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ