ãä»çµã¿è§£èª¬ãRedisã¯ãªãéãïŒ â ã€ã³ã¡ã¢ãªããŒã¿ããŒã¹ã®ä»çµã¿ãå³è§£
Redisã£ãŠååã¯ããèããã©ãæ®éã®ããŒã¿ããŒã¹ãšäœãéãã®ïŒ
äžçªã®éãã¯ãããŒã¿ããã¡ã¢ãªïŒRAMïŒãã«çœ®ããšããã ããæ®éã®ããŒã¿ããŒã¹ãããšãã°MySQLãPostgreSQLã¯ãåºæ¬çã«ãã£ã¹ã¯ïŒSSDãHDDïŒã«ããŒã¿ãä¿åããŠãå¿ èŠãªãšãã«èªã¿èŸŒãä»çµã¿ãªãã ãRedisã¯ããŒã¿ãå šéšã¡ã¢ãªäžã«æã€ãããèªã¿æžãããšã«ããéããã ãã
ã©ããããéããéãã®ïŒ
ãã£ã¹ã¯ãžã®ã¢ã¯ã»ã¹ã¯ããªç§ïŒmsïŒåäœã ãã©ãã¡ã¢ãªãžã®ã¢ã¯ã»ã¹ã¯ããç§ïŒnsïŒåäœããã£ãã10äžåãããã®å·®ããããã ãRedisã¯ç§é10äžãæ°åäžåã®ãªã¯ãšã¹ãããã°ãããšèšãããŠããŠããã£ãã·ã¥ãã»ãã·ã§ã³ç®¡çã¿ãããªããšã«ããéãããŒã¿ãè¿ããããå Žé¢ã«ãŽã£ãããªãã ãã
ãããªã«éããªããå šéšRedisã«ããã°ããããããªãïŒ
ã¡ã¢ãªã¯ãã£ã¹ã¯ãšæ¯ã¹ãŠããªãé«äŸ¡ã§ã容éãéããããã ãäŸãã°ãã£ã¹ã¯ãªãæ°TBãåœããåã ãã©ãã¡ã¢ãªã§æ°TBã¯ã³ã¹ããè·³ãäžãããã ããå®éã®æ§æã§ã¯ãã¡ã€ã³ã®ããŒã¿ããŒã¹ã®åã«Redisãããã£ãã·ã¥å±€ããšããŠçœ®ããã¿ãŒã³ãäžè¬çã ããããã¢ã¯ã»ã¹ãããããŒã¿ã ãRedisã«å ¥ããŠãé床ãšã³ã¹ãã®ãã©ã³ã¹ãåãããã ãã
Redisã£ãŠã·ã³ã°ã«ã¹ã¬ããã ã£ãŠèãããã©ãããã§é ããªããªãã®ïŒ
ãã質åã ããRedisãã·ã³ã°ã«ã¹ã¬ãããæ¡çšããŠããçç±ã¯ãããã¯ïŒæä»å¶åŸ¡ïŒã®ãªãŒããŒãããããŒãã«ãããããªãã ããã«ãã¹ã¬ããã ãšãè€æ°ã®ã¹ã¬ãããåãããŒã¿ãåæã«è§Šãããšããåé¡ããé²ãããã«ããã¯ãå¿ èŠã§ããããããã«ããã¯ã«ãªãããšããããRedisã¯ã¡ã¢ãªæäœèªäœãè¶ é«éã ãããã·ã³ã°ã«ã¹ã¬ããã§ãCPUãããã«ããã¯ã«ãªãã«ãããã ããã¡ãªã¿ã«Redis 6以éã§ã¯I/OåŠçã ããã«ãã¹ã¬ããåãããŠãããã«é«éåãããŠãããã ã
Redisã«ã¯ã©ããªããŒã¿ã®çš®é¡ãããã®ïŒ
Redisã¯ãããŒããªã¥ãŒåããåºæ¬ã ãã©ãããªã¥ãŒåŽã«5ã€ã®äž»èŠãªããŒã¿æ§é ãæã£ãŠããããStringã¯åçŽãªæååãæ°å€ãHashã¯ãã£ãŒã«ããšå€ã®ãã¢ïŒãŠãŒã¶ãŒæ å ±ã¿ãããªæ§é åããŒã¿ã«äŸ¿å©ïŒãListã¯é åºä»ãã®ãªã¹ãïŒãã¥ãŒãã¿ã€ã ã©ã€ã³ã«äœ¿ããïŒãSetã¯éè€ãªãã®éåïŒã¿ã°ç®¡çãå ±éã®åéã®èšç®ïŒãSorted Setã¯ã¹ã³ã¢ä»ãã®éåïŒã©ã³ãã³ã°ããªãŒããŒããŒãã«ãŽã£ããïŒã ããçšéã«åãããŠããŒã¿æ§é ãéžã¹ãã®ãRedisã®åŒ·ã¿ã ãã
ãã£ãã·ã¥ãšããŠäœ¿ããšããå€ãããŒã¿ãæ®ãç¶ãããããªãã®ïŒ
ããã§ãTTLïŒTime To LiveïŒãã®åºçªã ããåããŒã«æå¹æéãèšå®ã§ããŠãæéãéãããšèªåçã«åé€ããããã ããã£ãã·ã¥æŠç¥ãšããŠã¯ããŸãRedisãèŠã«è¡ã£ãŠãããŒã¿ãããã°ãããè¿ãïŒãã£ãã·ã¥ãããïŒããªããã°DBããååŸããŠRedisã«ã»ãããããCache Asideããã¿ãŒã³ãå®çªã ããã¡ã¢ãªãè¶³ããªããªã£ããšãã®ããã«ãLRUïŒæãå€ãã¢ã¯ã»ã¹ããããã®ããåé€ïŒãªã©ã®ã远ãåºãããªã·ãŒããèšå®ã§ãããã ã
ã¡ã¢ãªã«ããããŒã¿ããªããšããµãŒããŒãèœã¡ããå šéšæ¶ãã¡ãããªãïŒ
ãã®å¯ŸçãšããŠãRedisã«ã¯2ã€ã®æ°žç¶åæ¹åŒããããã ãRDBïŒRedis DatabaseïŒã¯å®æçã«ã¡ã¢ãªã®ã¹ãããã·ã§ããããã£ã¹ã¯ã«ä¿åããæ¹åŒã§ã埩æ§ãéããã©ãæåŸã®ã¹ãããã·ã§ãã以éã®ããŒã¿ã¯å€±ãããå¯èœæ§ããããAOFïŒAppend Only FileïŒã¯ãã¹ãŠã®æžãèŸŒã¿æäœããã°ãšããŠèšé²ããæ¹åŒã§ãããŒã¿ã®å®å šæ§ã¯é«ããã©ãã¡ã€ã«ã倧ãããªãããããå®éçšã§ã¯äž¡æ¹ãçµã¿åãããããšãå€ããã
Redisã«ã¯ã¡ãã»ãŒãžãéãæ©èœãããã£ãŠæ¬åœïŒ
æ¬åœã ãããPub/Subããšããã¡ãã»ãŒãžã³ã°æ©èœããã£ãŠããããã£ã³ãã«ã«ã¡ãã»ãŒãžãçºè¡ïŒPublishïŒãããšããã®ãã£ã³ãã«ã賌èªïŒSubscribeïŒããŠãããã¹ãŠã®ã¯ã©ã€ã¢ã³ãã«ãªã¢ã«ã¿ã€ã ã§å±ããã ããã£ããéç¥ããªã¢ã«ã¿ã€ã æŽæ°ã«äœ¿ããããããã«Redis 5.0ã§è¿œå ããããStreamsãã¯ã¡ãã»ãŒãžã®æ°žç¶åãã³ã³ã·ã¥ãŒããŒã°ã«ãŒãã«å¯Ÿå¿ããŠããŠãApache Kafkaã®ãããªæ¬æ Œçãªã¡ãã»ãŒãžãã¥ãŒãšããŠã䜿ãããã ã
å€§èŠæš¡ãªãµãŒãã¹ã§ã¯Redisãã©ããã£ãŠã¹ã±ãŒã«ãããã®ïŒ
ãŸããã¬ããªã±ãŒã·ã§ã³ãã§èªã¿åããã¹ã±ãŒã«ã§ãããããã¹ã¿ãŒã®Redisã«æžã蟌ãã§ãã¬ããªã«ïŒè€è£œïŒããèªã¿åãæ§æã ããããã«å€§èŠæš¡ã«ãªããšãRedis Clusterãã§ããŒã¿ãè€æ°ããŒãã«åæ£ïŒã·ã£ãŒãã£ã³ã°ïŒããããã ãAWSãªãElastiCacheãGoogle CloudãªãMemorystoreãAzureãªãAzure Cache for Redisãšãã£ããããŒãžããµãŒãã¹ã䜿ãã°ãã¬ããªã±ãŒã·ã§ã³ããã§ã€ã«ãªãŒããŒã®éçšãèªååããŠãããããæ¬çªç°å¢ã§ã¯ãããã£ããããŒãžããµãŒãã¹ã䜿ãã®ãä»ã®äž»æµã ãã
Redisã£ãŠå¥¥ãæ·±ããã ãâŠïŒãã£ãã·ã¥ã ããããªããŠããããªäœ¿ãæ¹ããããã ïŒ
ããã ããã»ãã·ã§ã³ç®¡çãã©ã³ãã³ã°ããªã¢ã«ã¿ã€ã åæãã¬ãŒãå¶éã忣ããã¯ãªã©ãRedisã®çšéã¯æ¬åœã«å¹ åºããã ããéããæ£çŸ©ããªå Žé¢ã§ã¯çã£å ã«ååãæããããŒã¿ã¹ãã¢ã ãããŸãã¯ãã£ãã·ã¥çšéãã詊ããŠã¿ãŠãæ £ããŠãããPub/SubãSorted SetãæŽ»çšããŠã¿ãã®ãããããã ãã