PHP5.2ãã©ã³ãã«redisã䜿çšããŸãã ããµãŒããŒããè¡ãèªã¿åã£ãŠãããšãã«ãšã©ãŒãçºçããŸããããšããã©ã³ãã ãªãšã©ãŒãçºçããŸãã ç§ã䜿çšããã³ãã³ãã¯ãã·ãªã¢ã«åãããæååãlpushããããšã§ãã
ç§ã¯phpããŒã¢ã³ã¹ã¯ãªããã§predisã䜿çšããŠããŸããã€ãŸããåžžã«çšŒåããŠããŸãã redis.confã®ã¿ã€ã ã¢ãŠãã¯ãã§ã«0ã«èšå®ããŠããŸãã
ãŸã£ããåãã¿ã€ãã«ã®æ°ããåé¡ãéãåã«ãããã§èª¬æãããŠããæé ã«åŸã£ãŠåé¡ããããã°ããŸãããïŒ Redisãªã¹ãã®ãã®ã¹ã¬ãããåç §ããŠãã ãããã¯ã©ã€ã¢ã³ãåŽã®åé¡ãšã¯é¢ä¿ã®ãªããã®ã§ããå¯èœæ§ããããŸãã
nrkããããšãããããŸãã socket_timeoutãšread_write_timeoutãèšå®ããŠã¿ãŠãåŸã§ããã§çµæãå ±åããŸãã
ããŒã¢ã³ã®ãããªã¹ã¯ãªããã§Predisã䜿çšããŠããå Žåãã¿ã€ã ã¢ãŠããå®å
šã«ç¡å¹ã«ããå Žåã¯ã read_write_timeout
ã-1
ããå¿
èŠããããŸãïŒãã®å€ã¯ãPredisã®å€ãããŒãžã§ã³ãšæ°ããããŒãžã§ã³ã§æ©èœããŸãïŒã ãŸãã redis.confã§timeout = 0
ãèšå®ããŠãRedisã®ããã©ã«ãã®ã¿ã€ã ã¢ãŠããç¡å¹ã«ããå¿
èŠãããããšã«æ³šæããŠãã ãããç¡å¹ã«ããªããšãRedisã¯300ç§éé
nrkãåè¿°ã®ããã«è©ŠããŠã¿ãŸããããçŸåšã¯å®å šã«æ©èœããŠããŸãã ããããšãïŒ
ãã ããæ¥ç¶ã®ã¿ã€ã ã¢ãŠããæã çºçããŸãã ãã§ã«timeout = 0ãread_write_timeoutã-1ã«èšå®ããŠããŸãã ãããçºçãããšãã«ãããã°ããããã«ã§ããããšã¯ãããŸããïŒ
timeout
ã¯Predisã«ãã£ãŠèªèãããæ¥ç¶ãã©ã¡ãŒã¿ãŒã§ã¯ãªãããã代ããã«connection_timeout
ã䜿çšããå¿
èŠããããŸãã connection_timeout
ã®ããã©ã«ãå€ã¯5ç§ã§ããå€ãäžããŠã¿ãããšãã§ããŸããããããåé¡ã®è§£æ±ºçã§ã¯ãªããšæããŸãã ãããã®ã¿ã€ã ã¢ãŠããçºçãããšãã«ãµãŒããŒã§äœãèµ·ãã£ãŠãããã確èªããå¿
èŠããããŸããããã¯å®éã«ã¯ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠç°ãªããããç§ã¯äœã®å©ãã«ããªããŸããã ãããã®ã¿ã€ã ã¢ãŠãã®èããããçç±ã¯æ¬¡ã®ãšããã§ãã
KEYS
ã³ãã³ããžã®é«é¡ãªåŒã³åºãã䜿çšããŠããªãããšã確èªããŸããïŒ Redisã«ä¿åãããŠããããŒã®æ°ã«ãã£ãŠã¯ã KEYS
ããµãŒããŒããããã¯ããŠããŸãå¯èœæ§ãããããã®éãä»ã®ãªã¯ãšã¹ããçä¿¡æ¥ç¶ãåŠçã§ããªããªããŸãããã®åé¡ã¯ä»ã®ãšããéãããŸãŸã«ããŠãããŸãããPredisã«é¢é£ãããã®ã§ã¯ãªããšç¢ºä¿¡ããŠããŸãã
nrkã ã¢ããã€ã¹ã©ãããconnection_timeoutã30ã«äžããŸããããããç£èŠããŸãã
å¥ã®æŽæ°ã§ã¯ãæ¥ç¶ã枬å®ããŸããããå®éã«äŸå€ã5ç§åŸã«çºçããããã§ãã ç§ã¯æ¬¡ã®æ¹æ³ã§connection_timeoutãå€æŽããŠã¿ãŸããïŒ
new Predis_ClientïŒ$ paramãarrayïŒ 'read_write_timeout' => -1ã 'connection_timeout' => 30ïŒïŒ;
ããã¯æ£ããã§ããïŒ 30幎代ã®connection_timeoutã¯æå¹ã«ãªã£ãŠããªãããã§ãããããã§ãäŸå€ãã¹ããŒãããŸãã
ãããã¯æ¥ç¶ãã©ã¡ãŒã¿ãŒã§ãããã¯ã©ã€ã¢ã³ããªãã·ã§ã³ã§ã¯ãªãããã read_write_timeout
ãšconnection_timeout
ã$param
ãã©ã¡ãŒã¿ãŒãšããŠæå®ããå¿
èŠããããŸãã
æ£çŽãªãšãããPredisã¯ãã¹ãã«æ¥ç¶ãããšãã«ãœã±ãããªãœãŒã¹ãäœãããŸãããããã¯ã»ãŒå®å šã«PHPã®å éšã«å§ä»»ãããŠãããããPHPã®ãã°ïŒå¯èœæ§ã¯äœãã§ãããããã§ãå¯èœæ§ããããŸãïŒãŸãã¯æ§æ/ã©ã³ã¿ã€ã ã®ããããã§ããå¯èœæ§ããããŸãããµãŒããŒã§åé¡ãçºçããããRedisãéãæäœãå®è¡ããŠããã°ããã®éãµãŒããŒããããã¯ããŠããŸãã
nrkããè¿äºããããšãããããŸãã åé¡ãèŠã€ãããŸããããµãŒããŒã§ip_conntrackã®åé¡ãäžè¶³ããŠããã ãã§ãã conntrackãä¿®æ£ããããšãæ¥ç¶ã¿ã€ã ã¢ãŠãããªããªããŸãã
ãããã®ã¿ã€ã ã¢ãŠãã®èåŸã«ããå®éã®åé¡ãæçµçã«èŠã€ããããšãç¥ã£ãŠããããã§ãã ã¿ã€ã ã¢ãŠãã®åé¡ããã©ãã«ã·ã¥ãŒãã£ã³ã°ããããã®ãã§ãã¯ã®åæãªã¹ãããŠãŒã¶ãŒã«æäŸããããã«ããããããããFAQã®ã©ããã«è¿œå ããŸãã
åããšã©ãŒãçºçããread_write_timeoutã0ã«èšå®ããããšã§è§£æ±ºããŸããã
predisã§ãããè¡ããŸããããpredisã¯ã©ã€ã¢ã³ãã䜿çšããŠåãããšãè¡ãããšã¯ã§ããŸããïŒ
ããã«ç€ºãããŠããããã«http://code.google.com/p/dires/source/browse/trunk/predis/examples/PubSubContext.php?r=4
ç§ã¯predisã¯ã©ã€ã¢ã³ãã次ã®ããã«äœæããŠããŸãïŒ$ redis = new Predis \ ClientïŒ "tcpïŒ//"ã$ turboConfig-> getActivitiesRedisHostïŒïŒïŒ; å®è£
ã§read_write_timeoutãæž¡ãã«ã¯ã©ãããã°ããã§ããã
@amitchhajerã¯ã©ã€ã¢ã³ãã¯ãååä»ãé
åãŸãã¯URIæååã®äž¡æ¹ã§åãæ¥ç¶ãã©ã¡ãŒã¿ãŒãåãå
¥ãããããURIæååã䜿çšããŠããå Žåã¯ãã¯ãšãªæååã®ããã«è¿œå ã§ããŸãïŒ tcp://127.0.0.1:6379?read_write_timeout=0
ã
@nrkæ å ±ãããããšããä»ã¯ããªãããŸãæ©èœããŠããŸãã
å®è¡æã«read_write_timeoutãå€æŽããå¿ èŠãããå Žåã¯ã©ããªããŸããïŒ ã¿ã€ã ã¢ãŠããã©ã¡ãŒã¿ïŒã³ã³ã¹ãã©ã¯ã¿ãé€ãïŒã®ã»ãã¿ãŒã¯ãããŸããïŒ
@bondegæ¥ç¶ãã©ã¡ãŒã¿ãŒã¯æå³çã«äžå€ã§ããã€ãŸããæ¥ç¶ãåæåããããšå€æŽã§ããŸããããã¯ã©ã€ã¢ã³ãã䜿çšããæ¥ç¶ãªããžã§ã¯ãããåºã«ãªãã¹ããªãŒã ãªãœãŒã¹ããã§ããããããã«å¿ããŠã¹ããªãŒã ãªãã·ã§ã³ãå€æŽããããšã§ããã®å¶éãåé¿ã§ããŸãã ã¯ã©ã¹ã¿ãŒã¢ãŒããŸãã¯ã¬ããªã±ãŒã·ã§ã³ã¢ãŒãã§ã¯ã©ã€ã¢ã³ãã䜿çšããŠããªããšä»®å®ããå Žåã®å°ããªã¹ããããã次ã«ç€ºããŸãã
$connection = $client->getConnection();
$stream = $connection->getResource();
stream_set_timeout($stream, 2);
$connection->getResource()
å®è¡ãããšãRedisãžã®connect()
æäœãå¹æçã«ããªã¬ãŒãããããããã®æ©èœã®äœ¿çšæ¹æ³ã«ãã£ãŠã¯ãã¬ã€ãžãŒæ¥ç¶ã®ã¡ãªããã倱ãããå¯èœæ§ãããããšã«æ³šæããŠãã ããã
Predisã®æ°ããããŒãžã§ã³ã§ã¯ããã©ã¡ãŒã¿connection_timeout
ååãtimeout
ã«å€æŽãããŠããããšã«æ³šæããŠãã ããã
ç§ã¯ã hããŒããããªãåºç¯å²ã«äœ¿çšããŠããŸãã ããã¯ããã¯ã«ã€ãªããå¯èœæ§ããããŸããïŒ
ããŒã¢ã³ã®ãããªã¹ã¯ãªããã§Predisã䜿çšããŠããå Žåãã¿ã€ã ã¢ãŠããå®å šã«ç¡å¹ã«ããå Žåã¯ã
read_write_timeout
ã-1
ããå¿ èŠããããŸãïŒãã®å€ã¯ãPredisã®å€ãããŒãžã§ã³ãšæ°ããããŒãžã§ã³ã§æ©èœããŸãïŒã ãŸãã redis.confã§timeout = 0
ãèšå®ããŠãRedisã®ããã©ã«ãã®ã¿ã€ã ã¢ãŠããç¡å¹ã«ããå¿ èŠãããããšã«æ³šæããŠãã ãããç¡å¹ã«ããªããšãRedisã¯300ç§éé
redis.confã§timeout = 0ãèšå®ããããšã«é¢é£ããæ¬ ç¹ã泚æã¯ãããŸããïŒ
ç§ãçãã®ã¯ãæ¥ç¶ãåæãããããšã¯æ±ºããŠãªãããã§ãã
Redisã®äœ¿çšçã¯é«ããŸãŸã§ã
nrkããè¿äºããããšãããããŸãã åé¡ãèŠã€ãããŸããããµãŒããŒã§ip_conntrackã®åé¡ãäžè¶³ããŠããã ãã§ãã conntrackãä¿®æ£ããããšãæ¥ç¶ã¿ã€ã ã¢ãŠãããªããªããŸãã
ãã®å¥çŽãä¿®æ£ããæ¹æ³..ã©ããæ¢ãã¹ãã§ããïŒ
redis.confã§timeout = 0ãèšå®ããããšã«é¢é£ããæ¬ ç¹ã泚æã¯ãããŸããïŒ
@ aditya-rewari-cbå®éã«timeout = 0
redis.confã®
ããŒã¢ã³ã®ãããªã¹ã¯ãªããã§Predisã䜿çšããŠããå Žåãã¿ã€ã ã¢ãŠããå®å šã«ç¡å¹ã«ããå Žåã¯ã
read_write_timeout
ã-1
ããå¿ èŠããããŸãïŒãã®å€ã¯ãPredisã®å€ãããŒãžã§ã³ãšæ°ããããŒãžã§ã³ã§æ©èœããŸãïŒã ãŸãã redis.confã§timeout = 0
ãèšå®ããŠãRedisã®ããã©ã«ãã®ã¿ã€ã ã¢ãŠããç¡å¹ã«ããå¿ èŠãããããšã«æ³šæããŠãã ãããç¡å¹ã«ããªããšãRedisã¯300ç§éé
@nrkç§ã¯RedisãããŒã¢ã³ããã»ã¹ïŒlaravelã¹ãŒããŒãã€ã¶ãŒã¯ãŒã«ãŒïŒã§äœ¿çšããŠããã ãã§ãªããéåžžã®ãã£ãã·ã³ã°ã§ã䜿çšããŠããŸã
'read_write_timeout' => -1ã䜿çšããéã®æ³šæïŒ
ãã®å€æŽã«ãããRedisã®éåžžã®ãã£ãã·ã¥äœ¿çšã§ç Žæããã°ã®å¯èœæ§ããããã©ããã確èªãããã£ãã®ã§ãã
ããããšã ïŒ
æãåèã«ãªãã³ã¡ã³ã
ããŒã¢ã³ã®ãããªã¹ã¯ãªããã§Predisã䜿çšããŠããå Žåãã¿ã€ã ã¢ãŠããå®å šã«ç¡å¹ã«ããå Žåã¯ã
read_write_timeout
ã-1
ããå¿ èŠããããŸãïŒãã®å€ã¯ãPredisã®å€ãããŒãžã§ã³ãšæ°ããããŒãžã§ã³ã§æ©èœããŸãïŒã ãŸãã redis.confã§timeout = 0
ãèšå®ããŠãRedisã®ããã©ã«ãã®ã¿ã€ã ã¢ãŠããç¡å¹ã«ããå¿ èŠãããããšã«æ³šæããŠãã ãããç¡å¹ã«ããªããšãRedisã¯300ç§éé