10 幎以äžéçºãããŠãã補åã«ã¯ãæ代é ãã®ãã¯ãããžãŒãå«ãŸããŠããŠãããŸã£ããé©ãã¹ãããšã§ã¯ãããŸããã ããããXNUMX ãæ以å ã« XNUMX åã®è² è·ãç¶æããå¿ èŠãããã転åã®ã³ã¹ããäœçŸåã«ãå¢å ãããšãããã©ããªãã§ãããã? ãã®å Žåãåªç§ãªãã€ããŒã ãšã³ãžãã¢ãå¿ èŠã§ãã ããããã¡ã€ããããªãã®ã§ã圌ãã¯ç§ã«åé¡ã®è§£æ±ºãä»»ããŸããã èšäºã®ååã§ã¯ãRedis ãã Redis-cluster ã«ç§»è¡ãããŸã§ã®çµç·¯ã説æããåŸåã§ã¯ãã¯ã©ã¹ã¿ãŒã®äœ¿ãå§ãæ¹ãšäœ¿çšæã®æ³šæç¹ã«ã€ããŠã¢ããã€ã¹ããŸãã
ãã¯ãããžãŒã®éžæ
ãããªã«æªãããšã§ããïŒ åå¥ã® Redis (ã¹ã¿ã³ãã¢ãã³ redis) 1 ã€ã®ãã¹ã¿ãŒãš N ã€ã®ã¹ã¬ãŒãã®æ§æã§ãã? ãªããããæ代é ãã®ãã¯ãããžãŒãšåŒã¶ã®ã§ãããã?
ããããRedis ã¯ããã»ã©æªããããŸãã...ããããç¡èŠã§ããªãæ¬ ç¹ãããã€ããããŸãã
-
ãŸããRedis ã¯ãã¹ã¿ãŒé害åŸã®çœå®³åŸ©æ§ã¡ã«ããºã ããµããŒãããŠããŸããã ãã®åé¡ã解決ããããã«ãVIP ãæ°ãããã¹ã¿ãŒã«èªå転éããæ§æã䜿çšããã¹ã¬ãŒãã® XNUMX ã€ã®åœ¹å²ãå€æŽããæ®ããåãæ¿ããŸããã ãã®ã¡ã«ããºã ã¯æ©èœããŸããããä¿¡é Œã§ãã解決çãšã¯èšããŸããã§ããã 第äžã«ã誀èŠå ±ãçºçããããšã第äºã«ãããã䜿ãæšãŠã§ãããæäœåŸã«ã¹ããªã³ã°ãå é»ããããã«æåæäœãå¿ èŠã§ãã£ãããšã§ãã
-
次ã«ããã¹ã¿ãŒã 1 ã€ãããªããããã·ã£ãŒãã£ã³ã°ã®åé¡ãçºçããŸããã ãXNUMX ã€ã®ãã¹ã¿ãŒãš N ã€ã®ã¹ã¬ãŒãããšããç¬ç«ããã¯ã©ã¹ã¿ãŒãããã€ãäœæãããããã®ãã·ã³ã«ããŒã¿ããŒã¹ãæåã§åæ£ããææ¥ã«ã¯ããŒã¿ããŒã¹ã® XNUMX ã€ãå¥ã®ã€ã³ã¹ã¿ã³ã¹ã«ç§»åããªããã°ãªããªãã»ã©èšåŒµããªãããšãç¥ãå¿ èŠããããŸããã
ãªãã·ã§ã³ã¯äœã§ããïŒ
- æãé«äŸ¡ã§æ©èœè±å¯ãªãœãªã¥ãŒã·ã§ã³ã¯ Redis-Enterprise ã§ãã ããã¯ãå®å šãªæè¡ãµããŒããæäŸãããããã¯ã¹åããããœãªã¥ãŒã·ã§ã³ã§ãã æè¡çãªèŠ³ç¹ããã¯çæ³çã«èŠããŸãããã€ããªãã®ãŒçãªçç±ããç§ãã¡ã«ã¯åããŸããã§ããã
- Redis ã¯ã©ã¹ã¿ãŒã ããã«äœ¿ãããã¹ã¿ãŒãã§ã€ã«ãªãŒããŒãšã·ã£ãŒãã£ã³ã°ããµããŒããããŠããŸãã ã€ã³ã¿ãŒãã§ãŒã¹ã¯éåžžçãšã»ãšãã©å€ãããŸããã ææã«èŠããŸãããèœãšãç©Žã«ã€ããŠã¯åŸã»ã©èª¬æããŸãã
- TarantoolãMemcacheãAerospike ãªã©ã ãããã®ããŒã«ã¯ãã¹ãŠãã»ãŒåãããšãè¡ããŸãã ããããããããã«ç¬èªã®æ¬ ç¹ããããŸãã ç§ãã¡ã¯ãã¹ãŠã®åµã XNUMX ã€ã®ã«ãŽã«å ¥ããªãããšã«æ±ºããŸããã ç§ãã¡ã¯ä»ã®ã¿ã¹ã¯ã« Memcache ãš Tarantool ã䜿çšããŠããŸãããä»åŸã®ããšãèãããšãå®éã«ã¯ãããã«é¢ããŠããã«å€ãã®åé¡ãçºçãããšèšããŸãã
䜿çšã®è©³çŽ°
Redis ã䜿çšããŠãããŸã§ã«ã©ã®ãããªåé¡ã解決ããŠãããããŸãã©ã®ãããªæ©èœã䜿çšããããèŠãŠã¿ãŸãããã
- 2GIS ãªã©ã®ãªã¢ãŒã ãµãŒãã¹ãžã®ãªã¯ãšã¹ãã®åã«ãã£ãã·ã¥ãã | ãŽã©ã³
GET SET MGET MSET "SELECT DB"
- MYSQL ã®åã«ãã£ãã·ã¥ | PHP
GET SET MGET MSET SCAN "ãã¿ãŒã³ã«ããããŒ" "DB ã®éžæ"
- ã»ãã·ã§ã³ãšãã©ã€ããŒåº§æšãæäœãããµãŒãã¹ã®ã¡ã€ã³ ã¹ãã¬ãŒãž | ãŽã©ã³
GET SET MGET MSET "SELECT DB" "ADD GEO KEY" "GET GEO KEY" SCAN
ã芧ã®ãšãããé«çæ°åŠã¯ãããŸããã ã§ã¯ãäœãé£ããã®ã§ããããïŒ ããããã®æ¹æ³ãåå¥ã«èŠãŠã¿ãŸãããã
æ¹æ³
説æ
Redisã¯ã©ã¹ã¿ãŒã®ç¹åŸŽ
ãœãªã¥ãŒã·ã§ã³
GET SET
æžã蟌ã¿/èªã¿åãããŒ
MGET MSET
è€æ°ã®ããŒã®æžã蟌ã¿/èªã¿åã
ããŒã¯å¥ã®ããŒãäžã«ãããŸãã æ¢è£œã®ã©ã€ãã©ãªã¯ XNUMX ã€ã®ããŒãå
ã§ã®ã¿è€æ°ã®æäœãå®è¡ã§ããŸã
MGET ã N GET æäœã®ãã€ãã©ã€ã³ã«çœ®ãæããŸãã
ã»ã¬ã¯ãDB
äœæ¥ããæ ç¹ãéžæããŠãã ãã
è€æ°ã®ããŒã¿ããŒã¹ããµããŒãããŠããŸãã
ãã¹ãŠã XNUMX ã€ã®ããŒã¿ããŒã¹ã«å
¥ããŸãã ããŒã«ãã¬ãã£ãã¯ã¹ãè¿œå ãã
ã¹ãã£ã³
ããŒã¿ããŒã¹å
ã®ãã¹ãŠã®ããŒã調ã¹ãŸã
ããŒã¿ããŒã¹ã XNUMX ã€ãããããã¯ã©ã¹ã¿ãŒå
ã®ãã¹ãŠã®ããŒã調ã¹ãã®ã¯ã³ã¹ããããããããŸã
XNUMX ã€ã®ããŒå
ã§äžå€åŒãç¶æãããã®ããŒã«å¯Ÿã㊠HSCAN ãå®è¡ããŸãã ãããã¯å®å
šã«æåŠããã
ãžãª
ãžãªããŒã䜿çšããæäœ
ãžãªããŒã¯ã·ã£ãŒãåãããŠããŸãã
ãã¿ãŒã³ããšã®ããŒ
ãã¿ãŒã³ã«ããããŒã®æ€çŽ¢
ããŒã¿ããŒã¹ã XNUMX ã€ãããããã¯ã©ã¹ã¿ãŒå
ã®ãã¹ãŠã®ããŒãæ€çŽ¢ããŸãã é«ããã
SCAN ã®å Žåã®ããã«ãäžå€æ¡ä»¶ãæåŠãŸãã¯ç¶æããŸãã
Redis ãš Redis ã¯ã©ã¹ã¿ãŒ
ã¯ã©ã¹ã¿ãŒã«åãæ¿ãããšäœã倱ãããäœãåŸãããã®ã§ãããã?
- æ¬ ç¹: ããã€ãã®ããŒã¿ããŒã¹ã®æ©èœã倱ãããŸãã
- è«ççã«ç¡é¢ä¿ãªããŒã¿ã XNUMX ã€ã®ã¯ã©ã¹ã¿ãŒã«ä¿åãããå Žåã¯ããã¬ãã£ãã¯ã¹ã®åœ¢åŒã§æŸèæãäœæããå¿ èŠããããŸãã
- SCANãDBSIZEãCLEAR DB ãªã©ã®ãåºæ¬ãæäœããã¹ãŠå€±ãããŸãã
- ãã«ããªãã¬ãŒã·ã§ã³ã¯ãè€æ°ã®ããŒããžã®ã¢ã¯ã»ã¹ãå¿ èŠãšãªãå Žåããããããå®è£ ãã¯ããã«å°é£ã«ãªã£ãŠããŸãã
- å©ç¹ïŒ
- ãã¹ã¿ãŒãã§ã€ã«ãªãŒããŒã®åœ¢åŒã§ã®ãã©ãŒã«ããã¬ã©ã³ã¹ã
- Redis åŽã®ã·ã£ãŒãã£ã³ã°ã
- ããŠã³ã¿ã€ã ãªãã§ããŒãéã§ããŒã¿ãã¢ãããã¯ã«è»¢éããŸãã
- ããŠã³ã¿ã€ã ãªãã§å®¹éãšè² è·ãè¿œå ããã³ååæ£ããŸãã
é«ã¬ãã«ã®ãã©ãŒã«ã ãã¬ã©ã³ã¹ãæäŸããå¿ èŠããªãå Žåãã¯ã©ã¹ã¿ãžã®ç§»è¡ã¯ç°¡åã§ã¯ãªãã¿ã¹ã¯ã«ãªãå¯èœæ§ãããããããã®äŸ¡å€ã¯ãªããšç§ã¯çµè«ä»ããŠããŸãã ãã ããæåã«åå¥ã®ããŒãžã§ã³ãšã¯ã©ã¹ã¿ãŒ ããŒãžã§ã³ã®ã©ã¡ãããéžæããå Žåã¯ãã¯ã©ã¹ã¿ãŒãéžæããå¿ èŠããããŸããã¯ã©ã¹ã¿ãŒã®æ¹ãæªããªããããã«é çã®çš®ã軜æžãããããã§ãã
移åã®æºåäž
ãŸãã¯ç§»åã®èŠä»¶ããå§ããŸãããã
- ã·ãŒã ã¬ã¹ã§ããå¿ èŠããããŸãã 5åéã®å®å šãªãµãŒãã¹åæ¢ã¯ç§ãã¡ã«ã¯é©ããŠããŸããã
- ã§ããã ãå®å šãã€æ®µéçã«è¡ãå¿ èŠããããŸãã ç¶æ³ãããçšåºŠã³ã³ãããŒã«ãããã äžåºŠã«ãã¹ãŠããã³ãããŠãããŒã«ãã㯠ãã¿ã³ãç¥ããããªããšã¯ããããããŸããã
- 移åæã®ããŒã¿æ倱ãæå°éã«æããŸãã ã¢ãããã¯ã«ç§»åããã®ã¯éåžžã«é£ããããšãç解ããŠãããããéåžžã® Redis ãšã¯ã©ã¹ã¿ãŒåããã Redis ã®ããŒã¿éã®ããçšåºŠã®éåæãèš±å¯ããŸãã
ã¯ã©ã¹ã¿ãŒã®ã¡ã³ããã³ã¹
移åã®çŽåã«ãã¯ã©ã¹ã¿ãŒããµããŒãã§ãããã©ãããæ€èšããå¿ èŠããããŸãã
- ãã£ãŒãã Prometheus ãš Grafana ã䜿çšããŠãCPU è² è·ãã¡ã¢ãªäœ¿çšéãã¯ã©ã€ã¢ã³ãæ°ãGETãSETãAUTH æäœã®æ°ãªã©ãã°ã©ãåããŸãã
- å°éç¥èã ææ¥ãããªãã®è²¬ä»»äžã§å·šå€§ãªã¯ã©ã¹ã¿ãŒãçºçãããšæ³åããŠãã ããã å£ããå Žåãããªã以å€ã«çŽãããšã¯ã§ããŸããã 圌ãã¹ããŒããç·©ãå§ããããã¿ããªãããªãã«åãã£ãŠèµ°ã£ãŠããã§ãããã ãªãœãŒã¹ãè¿œå ããããè² è·ãååæ£ãããããå¿ èŠãããå Žåã¯ããŸããåãåãããã ããã 25æ³ã§çœé«ªã«ãªããªãããã«ããããã®ã±ãŒã¹ã«åããç¹å®ã®ã¢ã¯ã·ã§ã³ã§ãã¯ãããžãŒãã©ã®ããã«åäœããããäºåã«ç¢ºèªããããšããå§ãããŸãã ããã«ã€ããŠã¯ãå°éç¥èãã»ã¯ã·ã§ã³ã§è©³ãã説æããŸãã
- ç£èŠãšã¢ã©ãŒãã ã¯ã©ã¹ã¿ãŒãçºçããå Žåã誰ãããæ©ããããç¥ããããšèããŸãã ããã§ã¯ããã¹ãŠã®ããŒããã¯ã©ã¹ã¿ãŒã®ç¶æ ã«é¢ããåãæ å ±ãè¿ããšããéç¥ã«éå®ããŸãã (ã¯ããç¶æ³ã¯ç°ãªããŸã)ã ãŸãããã®ä»ã®åé¡ã¯ãRedis ã¯ã©ã€ã¢ã³ã ãµãŒãã¹ããã®ã¢ã©ãŒãã«ãã£ãŠããè¿ éã«æ°ã¥ãããšãã§ããŸãã
åã
ã©ã®ããã«ç§»åããã:
- ãŸããã¯ã©ã¹ã¿ãŒã§åäœããã©ã€ãã©ãªãæºåããå¿ èŠããããŸãã ç§ãã¡ã¯ go-redis ã Go ããŒãžã§ã³ã®ããŒã¹ãšããŠæ¡çšããèªåãã¡ã«åãããã«å°ãå€æŽããŸããã ãã€ãã©ã€ã³ãä»ããŠãã«ãã¡ãœãããå®è£ ããç¹°ãè¿ããªã¯ãšã¹ãã®ã«ãŒã«ãè¥å¹²ä¿®æ£ããŸããã PHP ããŒãžã§ã³ã«ã¯ããã«åé¡ããããŸããããæçµçã«ã¯ php-redis ã«èœã¡çããŸããã 圌ãã¯æè¿ã¯ã©ã¹ã¿ãŒã®ãµããŒããå°å ¥ããŸããããç§ãã¡ã®æèŠã§ã¯ãããè¯ãããã«æããŸãã
- 次ã«ãã¯ã©ã¹ã¿ãŒèªäœããããã€ããå¿ èŠããããŸãã ããã¯æåéããæ§æãã¡ã€ã«ã«åºã¥ãã XNUMX ã€ã®ã³ãã³ãã§å®è¡ãããŸãã èšå®ã«ã€ããŠã¯åŸã»ã©è©³ãã説æããŸãã
- åŸã ã«åããå Žåã¯ãã©ã€ã¢ãŒãã䜿çšããŸãã åãã€ã³ã¿ãŒãã§ã€ã¹ãæ〠XNUMX ã€ã®ããŒãžã§ã³ã®ã©ã€ãã©ãª (XNUMX ã€ã¯éåžžããŒãžã§ã³çšããã XNUMX ã€ã¯ã¯ã©ã¹ã¿ãŒçš) ããããããå¥ã®ããŒãžã§ã³ã§åäœããã¯ã©ã¹ã¿ãŒãžã®ãã¹ãŠã®ãªã¯ãšã¹ãã䞊è¡ããŠè€è£œããã©ãããŒãäœæããã®ã«è²»çšã¯ããããŸãããå¿çãæ¯èŒããäžäžèŽããã°ã«æžã蟌ã¿ãŸã (ãã®å Žå㯠NewRelic)ã ãããã£ãŠãããŒã«ã¢ãŠãäžã«ã¯ã©ã¹ã¿ãŒã®ããŒãžã§ã³ãå£ããå Žåã§ããæ¬çªç°å¢ã«ã¯åœ±é¿ããããŸããã
- ã¯ã©ã¹ã¿ãŒããã©ã€ ã¢ãŒãã§å±éãããšãå¿çã®äžäžèŽã®ã°ã©ããå·éã«èŠãããšãã§ããŸãã ãšã©ãŒçããã£ãããšãããã確å®ã«å°ããªå®æ°ã«åãã£ãŠæšç§»ããå Žåã¯ããã¹ãŠåé¡ãããŸããã ãªãäŸç¶ãšããŠççŸãååšããã®ã§ãããã? å¥ã®ããŒãžã§ã³ã§ã®èšé²ã¯ã¯ã©ã¹ã¿ãŒå ãããå°ãæ©ãè¡ãããããããã€ã¯ãã©ã°ã«ããââããŒã¿ãçºæ£ããå¯èœæ§ããããŸãã æ®ã£ãŠããã®ã¯ãäžäžèŽãã°ã確èªããããšã ãã§ããããããããã¹ãŠã¬ã³ãŒãã®éååæ§ã«ãã£ãŠèª¬æãããå Žåã¯ãå ã«é²ãããšãã§ããŸãã
- ããã§ã也ç¥ã¢ãŒããéæ¹åã«åãæ¿ããããšãã§ããŸãã ã¯ã©ã¹ã¿ãŒãžã®æžã蟌ã¿ãšèªã¿åããè¡ããã¯ã©ã¹ã¿ãŒãå¥ã®ããŒãžã§ã³ã«è€è£œããŸãã äœã®ããã«ïŒ æ¥é±ã«ãããŠã¯ã©ã¹ã¿ãŒã®åãã芳å¯ããããšæããŸãã ããŒã¯è² è·æã«åé¡ãããããšãçªç¶å€æããå ŽåããŸãã¯äœããèæ ®ããŠããªãã£ãå Žåã§ãããã©ã€ã¢ãŒãã®ãããã§ãåžžã«å€ãã³ãŒããšçŸåšã®ããŒã¿ã«ç·æ¥ããŒã«ããã¯ã§ããŸãã
- æ®ã£ãŠããã®ã¯ããã©ã€ã¢ãŒããç¡å¹ã«ããŠãå¥ã®ããŒãžã§ã³ã解äœããããšã ãã§ãã
å°éç¥è
ãŸããã¯ã©ã¹ã¿ãŒã®èšèšã«ã€ããŠç°¡åã«èª¬æããŸãã
ãŸããRedis ã¯ããŒãšå€ã®ã¹ãã¢ã§ãã ä»»æã®æååãããŒãšããŠäœ¿çšããŸãã æ°å€ãæååãæ§é å
šäœãå€ãšããŠäœ¿çšã§ããŸãã åŸè
ã¯éåžžã«å€ããããŸãããäžè¬çãªæ§é ãç解ããããã«ã¯ãããã¯éèŠã§ã¯ãããŸããã
ããŒã®æ¬¡ã®æœè±¡åã¬ãã«ã¯ã¹ããã (SLOTS) ã§ãã åããŒã¯ 16 ã¹ãããã® 383 ã€ã«å±ããŸãã åã¹ãããå
ã«ã¯ä»»æã®æ°ã®ããŒãå«ããããšãã§ããŸãã ãããã£ãŠããã¹ãŠã®ããŒã¯ 16 ã®çŽ ã®ã»ããã«åå²ãããŸãã
次ã«ãã¯ã©ã¹ã¿ãŒå ã« N åã®ãã¹ã¿ãŒ ããŒããååšããå¿ èŠããããŸãã åããŒãã¯ãã¯ã©ã¹ã¿ãŒå ã®ä»ã®ããŒãã«é¢ãããã¹ãŠãèªèããåå¥ã® Redis ã€ã³ã¹ã¿ã³ã¹ãšããŠèããããšãã§ããŸãã åãã¹ã¿ãŒ ããŒãã«ã¯å€æ°ã®ã¹ããããå«ãŸããŠããŸãã åã¹ããã㯠XNUMX ã€ã®ãã¹ã¿ãŒ ããŒãã«ã®ã¿å±ããŸãã ãã¹ãŠã®ã¹ãããã¯ããŒãéã§åæ£ããå¿ èŠããããŸãã äžéšã®ã¹ããããå²ãåœãŠãããŠããªãå Žåãã¹ãããã«ä¿åãããŠããããŒã«ã¢ã¯ã»ã¹ã§ããªããªããŸãã åãã¹ã¿ãŒ ããŒããåå¥ã®è«çãã·ã³ãŸãã¯ç©çãã·ã³ã§å®è¡ããã®ãåççã§ãã ãŸããåããŒã㯠XNUMX ã€ã®ã³ã¢äžã§ã®ã¿å®è¡ãããããšãããã³åãè«çãã·ã³äžã§è€æ°ã® Redis ã€ã³ã¹ã¿ã³ã¹ãå®è¡ããå Žåã¯ãããããç°ãªãã³ã¢äžã§å®è¡ãããããšã確èªããŠãã ãã (ããã¯è©ŠããŠããŸããããçè«çã«ã¯åäœããã¯ãã§ã)ã ã åºæ¬çã«ããã¹ã¿ãŒ ããŒãã¯å®æçãªã·ã£ãŒãã£ã³ã°ãæäŸãããã¹ã¿ãŒ ããŒããå¢ããããšã§æžã蟌ã¿ããã³èªã¿åããªã¯ãšã¹ããæ¡åŒµã§ããããã«ãªããŸãã
ãã¹ãŠã®ããŒãã¹ãããã«åæ£ãããã¹ãããããã¹ã¿ãŒ ããŒãã«åæ£ãããåŸãä»»æã®æ°ã®ã¹ã¬ãŒã ããŒããåãã¹ã¿ãŒ ããŒãã«è¿œå ã§ããŸãã ãã®ãããªåãã¹ã¿ãŒ/ã¹ã¬ãŒã ãªã³ã¯å
ã§ã¯ãéåžžã®ã¬ããªã±ãŒã·ã§ã³ãæ©èœããŸãã ã¹ã¬ãŒãã¯ãèªã¿åããªã¯ãšã¹ããã¹ã±ãŒã«ãããããã¹ã¿ãŒé害ãçºçããå Žåã®ãã§ã€ã«ãªãŒããŒã®ããã«å¿
èŠã§ãã
次ã«ãã§ããããã«ãªã£ãã»ããããæäœã«ã€ããŠèª¬æããŸãã
Redis-CLI çµç±ã§ã·ã¹ãã ã«ã¢ã¯ã»ã¹ããŸãã Redis ã«ã¯åäžã®ãšã³ã㪠ãã€ã³ãããªããããã©ã®ããŒãã§ã次ã®æäœãå®è¡ã§ããŸãã ããããã®æç¹ã§ãè² è·ãããã£ãç¶æ ã§æäœãå®è¡ã§ããå¯èœæ§ã«åå¥ã«æ³šæãåããŸãã
- æåã«å¿ èŠãªæãéèŠãªããšã¯ãã¯ã©ã¹ã¿ãŒ ããŒãã®æäœã§ãã ã¯ã©ã¹ã¿ãŒã®ç¶æ ãè¿ããããŒãã®ãªã¹ãããã®åœ¹å²ãã¹ãããã®ååžãªã©ã衚瀺ããŸãã ã¯ã©ã¹ã¿ãŒæ å ±ãšã¯ã©ã¹ã¿ãŒ ã¹ãããã䜿çšãããšãããã«è©³ããæ å ±ãååŸã§ããŸãã
- ããŒãã®è¿œå ãšåé€ãã§ãããšäŸ¿å©ã§ãã ãã®ç®çã®ããã«ãã¯ã©ã¹ã¿ãŒã®ããŒãæäœãšã¯ã©ã¹ã¿ãŒã®å¿åŽæäœããããŸãã ã¯ã©ã¹ã¿ãŒã®åé€ã¯ããã¹ã¿ãŒãšã¬ããªã«ã®äž¡æ¹ã®ãã¹ãŠã®ããŒãã«é©çšããå¿ èŠãããããšã«æ³šæããŠãã ããã ãŸããã¯ã©ã¹ã¿ãŒäŒè°ã¯ XNUMX ã€ã®ããŒãäžã§ã®ã¿åŒã³åºãå¿ èŠããããŸãã ãã®éãã¯æ··ä¹±ãæãå¯èœæ§ããããããã¯ã©ã¹ã¿ãŒãå®éã«äœ¿çšããåã«ããã®éãã«ã€ããŠç解ããŠããããšããå§ãããŸãã ããŒãã®è¿œå ã¯æŠéäžã«å®å šã«è¡ãããã¯ã©ã¹ã¿ãŒã®åäœã«ã¯ãŸã£ãã圱é¿ããŸãã (ããã¯è«ççã§ã)ã ã¯ã©ã¹ã¿ãŒããããŒããåé€ããå Žåã¯ããã®ããŒãã«ã¹ããããæ®ã£ãŠããªãããšã確èªããå¿ èŠããããŸã (ããããªããšããã®ããŒãäžã®ãã¹ãŠã®ããŒã«ã¢ã¯ã»ã¹ã§ããªããªãå±éºããããŸã)ã ãŸããã¹ã¬ãŒããæã€ãã¹ã¿ãŒãåé€ããªãã§ãã ãããåé€ãããšãæ°ãããã¹ã¿ãŒã«å¯Ÿããäžå¿ èŠãªæ祚ãå®è¡ãããŸãã ããŒãã«ã¹ãããããªããªã£ãå Žåãããã¯å°ããªåé¡ã§ãããæåã«ã¹ã¬ãŒããåé€ã§ããã®ã«ããªãè¿œå ã®éžæè¢ãå¿ èŠã«ãªãã®ã§ããããã
- ãã¹ã¿ãŒãšã¹ã¬ãŒãã®äœçœ®ã匷å¶çã«äº€æããå¿ èŠãããå Žåã¯ãã¯ã©ã¹ã¿ãŒ ãã§ãŒã«ãªãŒã㌠ã³ãã³ãã䜿çšããŸãã æŠéäžã«åŒã³åºãå Žåãæäœäžã¯ãã¹ã¿ãŒã䜿çšã§ããªãããšãç解ããå¿ èŠããããŸãã éåžžãåãæ¿ã㯠XNUMX ç§ä»¥å ã«çºçããŸãããã¢ãããã¯ã§ã¯ãããŸããã ãã®éããã¹ã¿ãŒãžã®äžéšã®ãªã¯ãšã¹ãã倱æããããšãäºæ³ãããŸãã
- ã¯ã©ã¹ã¿ããããŒããåé€ããåã«ããã®ããŒãã«ã¹ããããæ®ã£ãŠããªãããã«ããŠãã ããã ãããã¯ãcluster reshard ã³ãã³ãã䜿çšããŠåé åžããããšããå§ãããŸãã ã¹ãããã¯ãããã¹ã¿ãŒããå¥ã®ãã¹ã¿ãŒã«è»¢éãããŸãã 転éãããããŒã¿ã®éã«ãã£ãŠã¯ãæäœå šäœã«æ°åãããå ŽåããããŸããã転éããã»ã¹ã¯å®å šã§ãããã¯ã©ã¹ã¿ãŒã®æäœã«ã¯ãŸã£ãã圱é¿ããŸããã ãããã£ãŠãå¯çšæ§ãæ°ã«ããããšãªããè² è·ãããã£ãŠããç¶æ ã§ãã¹ãŠã®ããŒã¿ãããããŒãããå¥ã®ããŒãã«çŽæ¥è»¢éã§ããŸãã ãã ãã埮åŠãªç¹ããããŸãã ãŸããããŒã¿è»¢éã«ã¯åä¿¡ããŒããšéä¿¡ããŒãã«äžå®ã®è² è·ã䌎ããŸãã åä¿¡ããŒãããã§ã«ããã»ããµãŒã«é«è² è·ã«ãªã£ãŠããå Žåã¯ãæ°ããããŒã¿ãåä¿¡ããããšã§ããŒããããŒãããªãã§ãã ããã 第 XNUMX ã«ãéä¿¡åŽãã¹ã¿ãŒã«ã¹ãããã XNUMX ã€ãæ®ããªããªããšããã®ãã¹ãŠã®ã¹ã¬ãŒãã¯çŽã¡ã«ãããã®ã¹ãããã転éããããã¹ã¿ãŒã«ç§»åããŸãã ãããŠåé¡ã¯ãããããã¹ãŠã®ã¹ã¬ãŒããäžåºŠã«ããŒã¿ãåæããããšããããšã§ãã å®å šãªåæã§ã¯ãªããéšåçãªåæã§ããã°å¹žéã§ãã ãããèæ ®ããŠãã¹ãããã®è»¢éãšã¹ã¬ãŒãã®ç¡å¹å/転éã®æäœãçµã¿åãããŠãã ããã ãããã¯ãååãªå®å šããŒãžã³ãããããšãé¡ã£ãŠããŸãã
- 転éäžã«ãã©ããã§ã¹ããããçŽå€±ããããšã«æ°ä»ããå Žåã¯ã©ãããã°ããã§ãããã? ãã®åé¡ã圱é¿ããªãããšãé¡ã£ãŠããŸããã圱é¿ãããå Žåã¯ãã¯ã©ã¹ã¿ãŒã®ä¿®æ£æäœãè¡ãããŸãã å°ãªããšããã¹ããããã©ã³ãã ãªé åºã§ããŒãå šäœã«åæ£ããŸãã æåã«åæ£ã¹ããããæã€ããŒããã¯ã©ã¹ã¿ãŒããåé€ããŠããã®åäœã確èªããããšããå§ãããŸãã æªå²ãåœãŠã®ã¹ãããå ã®ããŒã¿ã¯ãã§ã«å©çšã§ããªãããããããã®ã¹ãããã®å¯çšæ§ã«é¢ããåé¡ãå¿é ããŠãæé ãã§ãã ãŸãããã®æäœã¯åæ£ã¹ãããã«ã¯åœ±é¿ããŸããã
- ãã XNUMX ã€ã®äŸ¿å©ãªæäœã¯ã¢ãã¿ãŒã§ãã ããã«ãããããŒãã«éä¿¡ããããªã¯ãšã¹ãã®ãªã¹ãå šäœããªã¢ã«ã¿ã€ã ã§ç¢ºèªã§ããŸãã ããã«ãgrep ããŠå¿ èŠãªãã©ãã£ãã¯ããããã©ããã確èªããããšãã§ããŸãã
ãã¹ã¿ãŒãã§ã€ã«ãªãŒããŒæé ã«ã€ããŠãèšåãã䟡å€ããããŸãã ã€ãŸããããã¯ååšããŠãããç§ã®æèŠã§ã¯ãããã¯ããŸãæ©èœããŸãã ãã ãããã¹ã¿ãŒ ããŒããåãããã·ã³ã®é»æºã³ãŒããæããŠããRedis ã¯ããã«åãæ¿ãããã¯ã©ã€ã¢ã³ãã¯æ倱ã«æ°ä»ããªããšã¯èããªãã§ãã ããã ç§ã®å®è·µã§ã¯ãåãæ¿ãã¯æ°ç§ã§èµ·ãããŸãã ãã®éãäžéšã®ããŒã¿ã¯å©çšã§ããªããªããŸãããã¹ã¿ãŒãå©çšã§ããªãããšãæ€åºãããããŒããæ°ããããŒãã«æ祚ããã¹ã¬ãŒããåãæ¿ããããããŒã¿ãåæãããŸãã ãã®èšç»ãæ©èœããŠããããšãèªåèªèº«ã§ç¢ºèªããæåã®æ¹æ³ã¯ãçŸå°ã§æŒç¿ãè¡ãããšã§ãã ã©ãããããäžã®ã¯ã©ã¹ã¿ãŒãèµ·åããæå°éã®è² è·ãäžããã¯ã©ãã·ã¥ãã·ãã¥ã¬ãŒãã (ããŒãããããã¯ãããªã©ããŠ)ãã¹ã€ããã³ã°é床ãè©äŸ¡ããŸãã ç§ã®æèŠã§ã¯ããã®æ¹æ³ã§ XNUMX ïœ XNUMX æ¥ãã¬ã€ããŠåããŠããã¯ãããžãŒã®æäœã«èªä¿¡ãæãŠãããã«ãªããŸãã ãŸããã€ã³ã¿ãŒãããã®ååã䜿çšããŠãããœãããŠã§ã¢ãããããæ©èœããããšãé¡ã£ãŠããŸãã
èšå®
å€ãã®å ŽåãããŒã«ã®äœ¿çšãéå§ããããã«æåã«å¿ èŠãªã®ã¯æ§æã§ããããã¹ãŠãæ©èœããããã«ãªããšãæ§æã«ã¯è§ŠããããªããªããŸãã 匷å¶çã«èšå®ã«æ»ã£ãŠæ éã«æ€èšããã«ã¯ãããçšåºŠã®åªåãå¿ èŠã§ãã ç§ã®èšæ¶ã§ã¯ãæ§æã«äžæ³šæãåå ã§å°ãªããšã XNUMX åé倧ãªé害ãçºçããŸããã 次ã®ç¹ã«ç¹ã«æ³šæããŠãã ããã
- ã¿ã€ã ã¢ãŠã0
éã¢ã¯ãã£ããªæ¥ç¶ãéãããããŸã§ã®æé (ç§åäœ)ã 0 - éããªã
ç§ãã¡ã®ãã¹ãŠã®ã©ã€ãã©ãªãæ¥ç¶ãæ£ããéããããšãã§ããããã§ã¯ãããŸããã ãã®èšå®ãç¡å¹ã«ãããšãã¯ã©ã€ã¢ã³ãæ°ã®å¶éã«éããå±éºããããŸãã äžæ¹ããã®ãããªåé¡ããã£ãå Žåã倱ãããæ¥ç¶ã®èªåçµäºã«ãã£ãŠåé¡ãé èœãããæ°ä»ããªãå¯èœæ§ããããŸãã ãŸããæ°žç¶çãªæ¥ç¶ã䜿çšããå Žåã¯ããã®èšå®ãæå¹ã«ããªãã§ãã ããã - xy ãä¿åããŠè¿œå ã®ã¿ ã¯ã
RDBã¹ãããã·ã§ãããä¿åããŸãã
RDB/AOF ã®åé¡ã«ã€ããŠã¯ã以äžã§è©³ãã説æããŸãã - stop-writes-on-bgsave-error ããã & ã¹ã¬ãŒããµãŒã-å€ãããŒã¿ ã¯ã
æå¹ã«ãããšãRDB ã¹ãããã·ã§ãããç Žæãããšããã¹ã¿ãŒã¯å€æŽãªã¯ãšã¹ãã®åãå ¥ããåæ¢ããŸãã ãã¹ã¿ãŒãžã®æ¥ç¶ã倱ãããå Žåã§ããã¹ã¬ãŒãã¯ãªã¯ãšã¹ãã«å¿çãç¶ããããšãã§ããŸã (ã¯ã)ã ãŸãã¯å¿çãåæ¢ããŸã (ããã)
ç§ãã¡ã¯ãRedis ãã«ããã£ã«å€ãã£ãŠããŸãç¶æ³ã«æºè¶³ããŠããŸããã - repl-ping-ã¹ã¬ãŒã-æé 5
ãã®æéãçµéãããšããã¹ã¿ãŒãæ éãããã§ã€ã«ãªãŒããŒæé ãå®è¡ããææãæ¥ãã®ã§ã¯ãªãããšå¿é ãå§ããŸãã
誀æ€ç¥ãšãã§ã€ã«ãªãŒããŒã®ããªã¬ãŒãšã®éã®ãã©ã³ã¹ãæåã§èŠã€ããå¿ èŠããããŸãã ç§ãã¡ã®å®è·µã§ã¯ããã㯠5 ç§ã§ãã - repl-backlog-size 1024mb & epl-backlog-ttl 0
é害ãçºçããã¬ããªã«ã®ãããã¡ãŒã«ã¯ãã¡ããã©ããã ãã®éã®ããŒã¿ãä¿åã§ããŸãã ãããã¡ãäžè¶³ããå Žåã¯ãå®å šã«åæããå¿ èŠããããŸãã
å®éã«ã¯ãããé«ãå€ãèšå®ããæ¹ãããããšãããããŸãã ã¬ããªã«ãé 延ãå§ããçç±ã¯ãããããããŸãã é ããŠããå Žåã¯ããã¹ã¿ãŒããã§ã«å¯Ÿå¿ã«èŠæŠããŠããå¯èœæ§ãé«ããå®å šãªåæã¯æåŸã®æ段ã«ãªããŸãã - æ倧ã¯ã©ã€ã¢ã³ã 10000
ã¯ã³ã¿ã€ã ã¯ã©ã€ã¢ã³ãã®æ倧æ°ã
ç§ãã¡ã®çµéšã§ã¯ãããé«ãå€ãèšå®ããããšããå§ãããŸãã Redis 㯠10 åã®æ¥ç¶ãåé¡ãªãåŠçããŸãã ã·ã¹ãã ã«ååãªãœã±ãããããããšã確èªããŠãã ããã - maxmemory-policy volatile-ttl
䜿çšå¯èœãªã¡ã¢ãªå¶éã«éãããšãã«ããŒãåé€ãããã«ãŒã«ã
ããã§éèŠãªã®ã¯ãã«ãŒã«ãã®ãã®ã§ã¯ãªãããããã©ã®ããã«èµ·ããããç解ããããšã§ãã Redis ã¯ãã¡ã¢ãªå¶éã«éããå Žåã§ãæ£åžžã«åäœããæ©èœãè³è³ã§ããŸãã
RDB ãš AOF ã®åé¡
Redis èªäœã¯ãã¹ãŠã®æ å ±ã RAM ã«ä¿åããŸãããããŒã¿ããã£ã¹ã¯ã«ä¿åããã¡ã«ããºã ããããŸãã ããæ£ç¢ºã«ã¯ã次㮠XNUMX ã€ã®ã¡ã«ããºã ããããŸãã
- RDB ã¹ãããã·ã§ãã - ãã¹ãŠã®ããŒã¿ã®å®å šãªã¹ãããã·ã§ããã SAVE XY æ§æã䜿çšããŠèšå®ãããå°ãªããšã Y ããŒãå€æŽãããå ŽåãX ç§ããšã«ãã¹ãŠã®ããŒã¿ã®å®å šãªã¹ãããã·ã§ãããä¿åããããšè¡šç€ºãããŸãã
- è¿œå å°çšãã¡ã€ã« - å®è¡ãããé åºã§ã®æäœã®ãªã¹ãã X ç§ããšããŸã㯠Y æäœããšã«ãæ°ããåä¿¡æäœããã¡ã€ã«ã«è¿œå ããŸãã
- RDB ãš AOF ã¯ãåã® XNUMX ã€ãçµã¿åããããã®ã§ãã
ãã¹ãŠã®æ¹æ³ã«ã¯é·æãšçæããããŸããããã¹ãŠãåæããã€ããã¯ãããŸãããç§ã®æèŠã§ã¯ãæçœã§ã¯ãªãç¹ã«æ³šæãæãã ãã§ãã
ãŸããRDB ã¹ãããã·ã§ãããä¿åããã«ã¯ãFORK ãåŒã³åºãå¿ èŠããããŸãã 倧éã®ããŒã¿ãããå Žåããã¹ãŠã® Redis ãæ°ããªç§ãã 8 ç§éãã³ã°ããå¯èœæ§ããããŸãã ããã«ãã·ã¹ãã ã¯ãã®ãããªã¹ãããã·ã§ããã«ã¡ã¢ãªãå²ãåœãŠãå¿ èŠããããããè«çãã·ã³äžã§ 16 åã® RAM ã確ä¿ããå¿ èŠããããŸããRedis ã« XNUMX GB ãå²ãåœãŠãããŠããå Žåãä»®æ³ãã·ã³ã§ã¯ XNUMX GB ãå©çšå¯èœã§ããå¿ èŠããããŸããããã
次ã«ãéšåçãªåæã«ã¯åé¡ããããŸãã AOF ã¢ãŒãã§ã¯ãã¹ã¬ãŒããåæ¥ç¶ããããšãã«ãéšååæã®ä»£ããã«å®å šåæãå®è¡ã§ããŸãã ãªããããªããšãèµ·ããã®ããç§ã«ã¯ç解ã§ããŸããã§ããã ããããããã¯èŠããŠãã䟡å€ããããŸãã
ããã XNUMX ã€ã®ç¹ã¯ããã¹ãŠããã§ã«ã¹ã¬ãŒãã«ãã£ãŠè€è£œãããŠããå Žåããã£ã¹ã¯äžã«ãã®ããŒã¿ãæ¬åœã«å¿ èŠãã©ãããèãããã£ããã«ãªããŸãã ããŒã¿ã倱ãããå¯èœæ§ãããã®ã¯ããã¹ãŠã®ã¹ã¬ãŒãã«é害ãçºçããå Žåã®ã¿ã§ãããããã¯ãDC ã§ã®ç«çœãã¬ãã«ã®åé¡ã§ãã 劥åçãšããŠãããŒã¿ãã¹ã¬ãŒãã«ã®ã¿ä¿åããããšãææ¡ã§ããŸããããã®å Žåããããã®ã¹ã¬ãŒããçœå®³åŸ©æ§äžã«æ±ºããŠãã¹ã¿ãŒã«ãªããªãããã«ããå¿ èŠããããŸã (ãã®ãããæ§æã«ã¯ã¹ã¬ãŒãã®åªå é äœèšå®ããããŸã)ã ç§ãã¡èªèº«ããå ·äœçãªã±ãŒã¹ããšã«ãããŒã¿ããã£ã¹ã¯ã«ä¿åããå¿ èŠããããã©ãããèããŸãããã»ãšãã©ã®å Žåãçãã¯ãããããã§ãã
ãŸãšã
çµè«ãšããŠãredis-cluster ã«ã€ããŠãŸã£ããèããããšã®ãªã人㫠redis-cluster ãã©ã®ããã«æ©èœãããã«ã€ããŠã®äžè¬çãªã¢ã€ãã¢ãäžããããšãã§ãããŸããredis-cluster ã䜿çšããŠãã人ã«ã¯ããã€ãã®äžæçãªç¹ã«ã泚æãåããããšãã§ããã°å¹žãã§ããé·ãéã
ãæéãããã ãããããšãããããŸãããã€ãã®ããã«ããã®ãããã¯ã«é¢ããã³ã¡ã³ãã¯å€§æè¿ã§ãã
åºæïŒ habr.com