Redis µÄÐÔÄÜ»ÃÏëÓë²Ð¿áÏÖʵ
2011 Ä꣬µ±³õÑ¡Ôñ Redis ×÷ΪÖ÷ÒªµÄÄÚ´æÊý¾Ý´æ´¢£¬Ö÷ÒªÎüÒýÎÒµÄÊÇËüÌṩ¶àÑùµÄ»ù´¡Êý¾Ý½á¹¹¿ÉÒԺܷ½±ãµÄʵÏÖÒµÎñÐèÇó¡£ÁíÒ»·½ÃæÓֱȽϵ£ÐÄËüµÄÐÔÄÜÊÇ·ñ×ãÒÔÖ§³Å£¬±Ï¾¹µ±Ê± Redis »¹ÊôÓڱȽÏеĿªÔ´²úÆ·¡£µ« Redis ¹ÙÍøÐû³ÆÆäÊÇÌṩ¶àÊý¾Ý½á¹¹µÄ¸ßÐÔÄÜ´æ´¢£¬ÎÒÃǶÔÆ仹ÊDZ§ÓлÃÏëµÄ¡£
»ÃÏëÒªÁ˽â Redis µÄÐÔÄÜ£¬ÎÒÃÇÏÈ¿´¿´¹Ù·½µÄ»ù×¼ÐÔÄܲâÊÔÊý¾Ý£¬ÐÄÀïÓиöµ×¡£
²âÊÔÇ°Ìá Redis version 2.4.2 Using the TCP loopback Payload size = 256 bytes ²âÊÔ½á¹û SET: 198412.69/s GET: 198019.80/sÕâ¸öÊý¾Ý¸ÕÒ»¿´¾õµÃÓе㳬³öÔ¤ÆÚÁË£¬²»¹ý¿´Á˲âÊÔÇ°ÌáÊǹæ±ÜÁËÍøÂ翪ÏúµÄ£¬Client ºÍ Server È«ÔÚ±¾»ú¡£¶øÕæʵµÄʹÓó¡¾°¿Ï¶¨ÊÇÐèÒª×ßÍøÂçµÄ£¬¶øÇÒʹÓõĿͻ§¶Ë¿âÒ²ÊDz»Í¬µÄ¡£²»¹ýÕâ¸ö¹Ù·½²Î¿¼Êý¾Ýµ±Ê±ÈÃÎÒÃÇ¶Ô Redis µÄÐÔÄÜ»¹ÊDZ§ÓкܴóµÄÆÚ´ýµÄ¡£
ÁíÍâ¹Ù·½ÎĵµÖÐÒ²Ìáµ½£¬ÔÚ¾ÖÓòÍø»·¾³ÏÂÖ»Òª´«ÊäµÄ°ü²»³¬¹ýÒ»¸ö MTU £¨ÒÔÌ«ÍøÏ´óÔ¼ 1500 bytes£©£¬ÄÇô¶ÔÓÚ 10¡¢100¡¢1000 bytes ²»Í¬°ü´óСµÄ´¦ÀíÍÌÍÂÄÜÁ¦Êµ¼Ê½á¹û²î²»¶à¡£¹ØÓÚÍÌÍÂÁ¿ÓëÊý¾Ý´óСµÄ¹Øϵ¿É¼ûÏÂÃæ¹Ù·½ÍøÕ¾ÌṩµÄʾÒâͼ¡£
ÑéÖ¤»ùÓÚÎÒÃÇÕæʵµÄʹÓó¡¾°£¬ÎÒÃǴÁËÐÔÄÜÑéÖ¤»·¾³£¬×÷ÁËÒ»¸öÑéÖ¤²âÊÔ£¬ÈçÏ£¨Êý¾ÝÀ´×ÔͬÊ @kusix µ±ÄêµÄ²âÊÔ±¨¸æ£¬¸Ðл£©¡£
²âÊÔÇ°Ìá Redis version 2.4.1 Jmeter version 2.4 Network 1000Mb Payload size = 100 bytes ²âÊÔ½á¹û SET: 32643.4/s GET: 32478.8/sÔÚʵÑé»·¾³Ïµõ½µÄ²âÊÔÊý¾Ý¸øÈ˵ĸоõºÍ¹Ù·½²îÁËÂù¶à£¬ÕâÀïÃæÒòΪÓÐÍøÂçºÍ¿Í»§¶Ë¿â×ۺϵÄÓ°ÏìËùÒÔûÓÐʵ¼ÊµÄºáÏò±È½ÏÒâÒå¡£Õâ¸öʵÑé»·¾³Êµ²âÊý¾ÝÖ»¶ÔÎÒÃÇÕæʵµÄÉú²ú»·¾³¾ßÓÐÖ¸µ¼²Î¿¼×÷Óá£ÔÚʵÑé»·¾³µÄ²âÊÔ£¬µ¥ Redis ʵÀýÔËÐÐÎȶ¨£¬µ¥ºË CPU ÀûÓÃÂÊÔÚ 70% ~ 80% Ö®¼ä²¨¶¯¡£³ýÁ˲âÊÔ 100 bytes µÄ°ü£¬»¹²âÁË 1k¡¢10k ºÍ 100k ²»Í¬´óСµÄ°ü£¬ÈçÏÂͼËùʾ£º
³ÏÈ»£¬1k »ù±¾ÊÇ Redis ÐÔÄܵÄÒ»¸ö¹Õµã£¬ÕâÒ»µã´ÓÉÏͼ¿´Ç÷ÊÆÊǺ͹ٷ½Í¼µÄÒ»Ö¡£
ÏÖʵ»ùÓÚʵÑéÊÒ²âÊÔÊý¾ÝºÍʵ¼ÊÒµÎñÁ¿£¬ÏÖʵÖвÉÓÃÁË Redis ·ÖƬÀ´³Ðµ£¸ü´óµÄÍÌÍÂÁ¿¡£Ò»¸öµ¥Ò» Redis ·ÖƬһÌìµÄ ops ²¨¶¯ÔÚ 20k~30k Ö®¼ä£¬µ¥ºË CPU ÀûÓÃÂÊÔÚ 40% ~ 80% Ö®¼ä²¨¶¯£¬ÈçÏÂͼ¡£
ÕâÓëµ±³õʵÑéÊÒ»·¾³µÄ²âÊÔ½á¹û½Ó½ü£¬¶øÄ¿Ç°Éú²ú»·¾³Ê¹ÓÃµÄ Redis °æ±¾ÒÑÉý¼¶µ½ 2.8 ÁË¡£Èç¹ûÒµÎñÁ¿·åÖµ¼ÌÐøÔö¸ß£¬¿´ÆðÀ´µ¥¸ö Redis ·ÖƬ»¹ÓдóÔ¼ 20% µÄÓàÁ¿¾Íµ½µ¥ÊµÀý¼«ÏÞÁË¡£ÄÇô¿ÉÐеİ취¾ÍÊǼÌÐøÔö¼Ó·ÖƬµÄÊýÁ¿À´·Ö̯µ¥¸ö·ÖƬµÄѹÁ¦£¬Ç°ÌáÊÇÄܹ»ºÜÈÝÒ×µÄÔö¼Ó·ÖƬ¶ø²»Ó°ÏìÒµÎñϵͳ¡£Õâ²ÅÊÇʹÓà Redis ÃæÁÙµÄÕæÕý²Ð¿áÏÖʵ¿¼Ñé¡£
²Ð¿áRedis ÊǸöºÃ¶«Î÷£¬ÌṩÁ˺ܶàºÃÓõŦÄÜ£¬¶øÇҴ󲿷ÖʵÏֵĶ¼»¹¼È¿É¿¿ÓÖ¸ßЧ£¨Ö÷´Ó¸´ÖƳýÍ⣩¡£ËùÒÔÒ»¿ªÊ¼ÎÒÃÇ·¸ÁËÒ»¸öÌìÕæµÄÓ÷¨´íÎ󣺰ÑËùÓв»Í¬ÀàÐ͵ÄÊý¾Ý¶¼·ÅÔÚÁËÒ»×é Redis ¼¯ÈºÖС£
µ¼ÖµÄÎÊÌâ¾ÍÊǵ±ÄãÏëÀ©·ÖƬµÄʱºò£¬¿Í»§¶Ë Hash Ó³Éä¾Í±äÁË£¬ÕâÊÇҪǨÒÆÊý¾ÝµÄ¡£¶øËùÓÐÊý¾Ý·ÅÔÚÒ»×é Redis ÀҪ°ÑËüÃÇ·Ö¿ª¾ÍÂé·³ÁË£¬Ã¿¸ö Redis ʵÀýÀïÃ涼ÊÇǧÍò¼¶µÄ key¡£
¶øÁíÍâÒ»¸öÎÊÌâÊǵ¥¸ö Redis µÄÐÔÄÜÉÏÏÞ´øÀ´µÄÆ¿¾±ÎÊÌâ¡£ÓÉÓÚ CPU µÄµ¥ºËƵÂʶ¼·¢Õ¹µ½ÁËÆ¿¾±£¬¶¼ÔÚÍù¶àºË·¢Õ¹£¬Ò»¸ö PC Server Ò»°ã 24»ò32 ºË¡£µ« Redis µÄµ¥Ïß³ÌÉè¼Æ»úÖÆÖ»ÄÜÀûÓÃÒ»¸öºË£¬µ¼Öµ¥ºË CPU µÄ×î´ó´¦ÀíÄÜÁ¦¾ÍÊÇ Redis µ¥ÊµÀý´¦ÀíÄÜÁ¦µÄÌ컨°åÁË¡£
¾Ù¸ö¾ßÌåµÄ°¸Àý£¬Ð¹¦ÄÜÉÏÏßÓÖÓе㲻·ÅÐÄ£¬ÓÚÊÇ×öÁ˸ö¿ª¹Ø·ÅÔÚ Redis£¬ËùÓÐÓ¦ÓÿÉÒԺܷ½±ãµÄ¹²Ïí¡£Í¨¹ý¶ÁÈ¡ Redis ÖеĿª¹Ø key À´ÅжÏÊÇ·ñÆôÓÃij¸ö¹¦ÄÜ£¬¶Ôÿ¸öÇëÇó×öÅжϡ£ÕâÀïµÄÎÊÌâÊÇʲô£¿Õâ¸ö key Ö»ÄÜ·ÅÔÚÒ»¸öʵÀýÉÏ£¬¶øËùÓеÄÁ÷Á¿½øÈ붼ҪȥÕâ¸ö Redis GET һϣ¬µ¼Ö¸÷ÖƬʵÀýѹÁ¦É½´ó¡£¶øËüµÄ¼«ÏÞÔÚÎÒÃǵĻ·¾³Éϲ»¹ý 4 Íò OPS£¬Õâ¸öÌ컨°åÆäʵ²¢²»¸ß¡£
×ܽáÈÏʶÇå³þÁËÏÖʵµÄ²Ð¿áÐÔ£¬Á˽âÁËÄãËùÔÚ»·¾³ Redis µÄÕæʵÐÔÄÜÖ¸±ê£¬Çø·ÖÇå»ÃÏëºÍÏÖʵ¡£ÎÒÃDzÅÄÜÕæÕý¿¼ÂǺÃÈçºÎºÏÀíµÄÀûÓà Redis µÄ¶à¹¦ÄÜÌØÐÔ£¬²¢ÓÐЧ¹æ±ÜµÄËüµÄÈõÏÔÙ¸ø³öһЩ Redis µÄʹÓý¨Ò飺
-¸ù¾ÝÊý¾ÝÐÔÖÊ°Ñ Redis ¼¯Èº·ÖÀࣻÎҵľÑéÊÇ·ÖÈýÀࣺcache¡¢buffer ºÍ db
- cache£ºÁÙʱ»º´æÊý¾Ý£¬¼Ó·ÖƬÀ©ÈÝÈÝÒ×£¬Ò»°ãÎ޳־û¯ÐèÒª¡£
- buffer£ºÓÃ×÷»º³åÇø£¬Æ½»¬ºó¶ËÊý¾Ý¿âµÄд²Ù×÷£¬¸ù¾ÝÊý¾ÝÖØÒªÐÔ¿ÉÄÜÓг־û¯ÐèÇó¡£
- db£ºÌæ´úÊý¾Ý¿âµÄÓ÷¨£¬Óг־û¯ÐèÇó¡£
ÁíÍ⣬ÓÐÒ»ÖÖ¹ÛµãÈÏΪÓÃ×÷»º´æ Memcache ¸üºÏÊÊ£¬ÕâÀï¿ÉÒÔ¶ÀÁ¢·ÖÎöÏÂÆäÖеÄÓÅÁÓÈ¡Éá°É¡£Memcache ÊÇÉè¼ÆΪ¶àÏ̵߳ģ¬ËùÒÔÔÚ¶àºË»úÆ÷Éϵ¥ÊµÀý¶Ô CPU µÄÀûÓøüÓÐЧ£¬ËùÒÔËüµÄÐÔÄÜÌ컨°åÒ²¸ü¸ß¡££¨¼ûÏÂͼ£©Òª´ïµ½Í¬ÑùµÄЧ¹û£¬¶ÔÓÚÒ»¸ö 32 ºË»úÆ÷£¬Äã¿ÉÄÜÐèÒª²¿Êð 32 ¸ö Redis ʵÀý£¬¶ÔÔËάҲÊÇÒ»ÖÖ¸ºµ£¡£
³ý´Ë£¬Redis »¹Óиö 10k ÎÊÌ⣬µ±»º´æÊý¾Ý´óÓÚ 10k£¨ÓÃ×÷¾²Ì¬Ò³ÃæµÄ»º´æ£¬¾Í¿ÉÄܳ¬¹ýÕâ¸ö´óС£©ÑÓ³Ù»áÃ÷ÏÔÔö¼Ó£¬ÕâÒ²Êǵ¥Ï̻߳úÖÆ´øÀ´µÄÎÊÌâ¡£Èç¹ûÄãµÄÓ¦ÓÃÒµÎñÁ¿Àë Redis µÄÐÔÄÜÌ컨°å»¹±È½ÏÔ¶¶øÇÒҲûÓÐ 10k ÐèÇó£¬ÄÇôÓà Redis ×÷»º´æÒ²ÊǺÏÀíµÄ£¬¿ÉÒÔÈÃÓ¦ÓüõÉÙ¶àÒÀÀµÒ»ÖÖÍⲿ¼¼ÊõÕ»¡£×îºó£¬¸ãÇå³þÏֽ׶ÎÄãµÄÓ¦Óõ½µ×ÐèҪʲô£¬ÊǶàÑùµÄÊý¾Ý½á¹¹ºÍ¹¦ÄÜ¡¢¸üºÃµÄÀ©Õ¹ÄÜÁ¦»¹ÊǸüÃô¸ÐµÄÐÔÄÜÐèÇó£¬È»ºóÔÙÀ´Ñ¡ÔñºÏÊʵŤ¾ß°É¡£±ðÖ»¿´µ½¸ö»ù×¼²âÊÔµÄÐÔÄÜÊý¾Ý£¬¾Í»¶ºôȸԾÆðÀ´ÁË¡£
¶îÍ⳶µãÆäËûµÄ£¬Redis µÄ×÷Õß @antirez ¶Ô×Ô¼ºµÄ²úÆ·ºÍ¼¼ÊõÄÇÊÇÏ൱×ÔÐÅ¡£Ò»ÓÐÈËÅúÆÀ Redis µÄÎÊÌ⣬Ëû¶¼ÊÇÒªÌø³öÀ´ÔÚ×Ô¼ºµÄ blog Àï¼ÓÒÔ»ØÓ¦ºÍ˵Ã÷µÄ¡£±ÈÈçÓÐÈË˵ Redis ¹¦ÄܶàÈÝÒ×ʹÓõ«Ò²ÈÝÒ×ÎóÓã¬×÷Õß¾ÍÅܳöÀ´½âÊÍÎÒÉè¼ÆÊÇÕë¶ÔÿÖÖ²»Í¬³¡¾°µÄ£¬ÄãÓõIJ»¶Ô¹ÖÎÒ¿©£¬¹ÖÎÒ¿©¡£ÓÐÈË˵»º´æ³¡¾° Memcache ±È Redis ¸üºÏÊÊ£¬×÷ÕßҲרÃÅдÁËƪÎÄÕÂÀ´ËµÃ÷£¬´ó¸Å¾ÍÊÇ Memcache ÓÐµÄ Redis ¶¼ÓУ¬ËüûÓеÄÎÒ»¹ÓС£µ±È»×îºóÒ²³ÐÈ϶àÏß³ÌÊÇûÓеģ¬µ«ÕýÔÚ˼¿¼Îª Redis I/O Ôö¼ÓỊ̈߳¬Ã¿¸ö Client Ò»¸öÏ̶߳ÀÁ¢´¦Àí£¬¾ÍÏñ Memcache Ò»Ñù£¬ÒѾµÈ²»¼°ÒªÈ¥¿ª·¢ºÍ²âÊÔÁË£¬·âסËùÒÔÅúÆÀÕßµÄ×ì¡£
Redis ÕâЩÄê²»¶ÏµÄÔö¼Óй¦ÄܺÍÓÅ»¯¸Ä½ø£¬ÈÃËü±äµÃ¸üÁé»î³¡¾°ÊÊÓ¦ÐÔ¸ü¶àµÄͬʱ£¬Ò²ÈÃÎÒÃÇÔÚʹÓÃʱÐèÒª¸üϸÖµÄ˼¿¼£¬²»ÊÇËüÓÐʲôÎÒ¾ÍÓÃʲô£¬¶øÊÇÄãÐèҪʲôÄã¾ÍÑ¡Ôñʲô¡£
ÕâƪÏȵ½Õ⣬ºóÃ滹»áÔÙдд¹ØÓÚ Redis À©Õ¹·½ÃæµÄÖ÷Ìâ¡£
²Î¿¼
¡¡