LinuxÔËάÐèÒªÖªµÀµÄRedisÂÄÀú
Redis ÔÚÄ¿½ñµÄÊÖÒÕÉçÇøÀïÊǺÜÊÇÈÈÃŵġ£ÀúÀ´×Ô Antirez Ò»¸öССµÄСÎÒ˽ÈËÏîÄ¿µ½³ÉΪÄÚ´æÊý¾Ý´æ´¢ÐÐÒµµÄ±ê×¼£¬RedisÒѾ×ß¹ýÁ˺ܳ¤µÄÒ»¶Î·¡£ËæÖ®¶øÀ´µÄһϵÁÐ×î¼Ñʵ¼ù£¬Ê¹µÃ´ó´ó¶¼ÈË¿ÉÒÔ׼ȷµØʹÓà Redis¡£
ÏÂÃæÎÒÃǽ«Ì½Ë÷׼ȷʹÓà Redis µÄ10¸öÂÄÀú¡£
1¡¢×èֹʹÓà KEYS *
Okay£¬ÒÔÌôÕ½Õâ¸öÏÂÁî×îÏÈÕâƪÎÄÕ£¬»òÐí²¢²»ÊÇÒ»¸öºÃµÄ·½·¨£¬µ«Æäȷʵ¿ÉÄÜÊÇ×îÖ÷ÒªµÄÒ»µã¡£Ðí¶àʱ¼äµ±ÎÒÃǹØ×¢Ò»¸öredisʵÀýµÄͳ¼ÆÊý¾Ý£¬ÎÒÃÇ»á¿ìËÙµØÊäÈ롱KEYS *¡±ÏÂÁÕâÑùkeyµÄÐÅÏ¢»áºÜÏÔ×ŵØչʾ³öÀ´¡£Æ½ÐĶøÂÛ£¬´Ó³ÌÐò»¯µÄ½Ç¶È³ö·¢ÍùÍùÇãÏòÓÚд³öÏÂÃæÕâÑùµÄα´úÂ룺
for key in'keys *': doAllTheThings()¡¡
µÇ¼ºó¸´ÖÆ
¿ÉÊǵ±ÄãÓÐ1300Íò¸ökeyʱ£¬Ö´ÐÐËÙÂʽ«»á±äÂý¡£ÓÉÓÚKEYSÏÂÁîµÄʱ¼äÖØƯºóÊÇO(n)£¬ÆäÖÐnÊÇÒª·µ»ØµÄkeysµÄ¸öÊý£¬ÕâÑùÕâ¸öÏÂÁîµÄÖØƯºó¾ÍÈ¡¾öÓÚÊý¾Ý¿âµÄ¾ÞϸÁË¡£²¢ÇÒÔÚÕâ¸ö²Ù×÷Ö´ÐÐʱ´ú£¬ÆäËüÈκÎÏÂÁîÔÚÄãµÄʵÀýÖж¼ÎÞ·¨Ö´ÐС£
×÷Ϊһ¸öÌæ»»ÏÂÁ¿´Ò»Ï SCAN °É£¬ÆäÔÊÐíÄãÒÔÒ»ÖÖ¸üÓѺõķ½·¨À´Ö´ÐС SCAN ͨ¹ýÔöÁ¿µü´úµÄ·½·¨À´É¨ÃèÊý¾Ý¿â¡£ÕâÒ»²Ù×÷»ùÓÚÓαêµÄµü´úÆ÷À´Íê³ÉµÄ£¬Òò´ËÖ»ÒªÄãÒÔΪºÏÊÊ£¬Äã¿ÉÒÔËæʱ×èÖ¹»ò¼ÌÐø¡£
2¡¢ÕÒ³öÍÏÂý Redis µÄ×ï¿ý×ï¿ý
ÓÉÓÚ Redis ûÓкÜÊÇÏêϸµÄÈÕÖ¾£¬ÒªÏëÖªµÀÔÚ Redis ʵÀýÄÚ²¿¶¼×öÁËЩʲôÊǺÜÊÇÄÑÌâµÄ¡£ÐÒÔ˵ÄÊÇ Redis ÌṩÁËÒ»¸öÏÂÃæÕâÑùµÄÏÂÁîͳ¼Æ¹¤¾ß£º
127.0.0.1:6379> INFO commandstats # Commandstats cmdstat_get:calls=78,usec=608,usec_per_call=7.79 cmdstat_setex:calls=5,usec=71,usec_per_call=14.20 cmdstat_keys:calls=2,usec=42,usec_per_call=21.00 cmdstat_info:calls=10,usec=1931,usec_per_call=193.10
µÇ¼ºó¸´ÖÆ
ͨ¹ýÕâ¸ö¹¤¾ß¿ÉÒÔÉó²éËùÓÐÏÂÁîͳ¼ÆµÄ¿ìÕÕ£¬ºÃ±ÈÏÂÁîÖ´ÐÐÁ˼¸¶à´Î£¬Ö´ÐÐÏÂÁîËùãýÃðµÄºÁÃëÊý(ÿ¸öÏÂÁîµÄ×Üʱ¼äÇå¾²¾ùʱ¼ä) Ö»ÐèÒª¼òÆÓµØÖ´ÐÐ CONFIG RESETSTAT ÏÂÁî¾Í¿ÉÒÔÖØÖã¬ÕâÑùÄã¾Í¿ÉÒÔ»ñµÃÒ»¸öȫеÄͳ¼ÆЧ¹û¡£
3¡¢½« Redis-Benchmark Ч¹û×÷Ϊ²Î¿¼£¬¶ø²»ÒªÒ»¸Å¶øÂÛ
Redis Ö®¸¸ Salvatore ¾Í˵¹ý£º¡°Í¨¹ýÖ´ÐÐGET/SETÏÂÁîÀ´²âÊÔRedis¾ÍÏñÔÚÓêÌì¼ì²â·¨ÀÀûµÄÓêË¢Çå½à¾µ×ÓµÄЧ¹û¡±¡£Ðí¶àʱ¼äÈËÃÇÅܵ½ÎÒÕâÀËûÃÇÏëÖªµÀΪʲô×Ô¼ºµÄRedis-Benchmarkͳ¼ÆµÄЧ¹ûµÍÓÚ×îÓÅЧ¹û ¡£µ«ÎÒÃDZØÐèÒª°ÑÖݪֲî±ðµÄÕæÕæÏàÐÎ˼Á¿½øÀ´£¬ÀýÈ磺
¿ÉÄÜÊܵ½ÄÄЩ¿Í»§¶ËÔËÐÐÇéÐεÄÏÞÖÆ£¿
ÊÇͳһ¸ö°æ±¾ºÅÂð£¿
²âÊÔÇéÐÎÖеÄÌåÏÖÓëÓ¦Óý«ÒªÔËÐеÄÇéÐÎÊÇ·ñÒ»Ö£¿
Redis-BenchmarkµÄ²âÊÔЧ¹ûÌṩÁËÒ»¸ö°ü¹ÜÄãµÄ Redis-Server ²»»áÔËÐÐÔÚ·ÇÕý³£×´Ì¬ÏµĻù×¼µã£¬¿ÉÊÇÄãÓÀÔ¶²»Òª°ÑËü×÷Ϊһ¸öÕæʵµÄ¡°Ñ¹Á¦²âÊÔ¡±¡£Ñ¹Á¦²âÊÔÐèÒª·´Ó¦³öÓ¦ÓõÄÔËÐз½·¨£¬²¢ÇÒÐèÒªÒ»¸ö¾¡¿ÉÄܵĺÍÉú²úÏàËƵÄÇéÐΡ£
4¡¢Hashes ÊÇÄãµÄ×î¼ÑÑ¡Ôñ
ÒÔÒ»ÖÖÓÅÑŵķ½·¨ÒýÈë hashes °É¡£hashes ½«»á´ø¸øÄãÒ»ÖÖب¹ÅδÓеÄÌåÑ顣֮ǰÎÒÔø¿´µ½¹ýÐí¶àÀàËÆÓÚÏÂÃæÕâÑùµÄkey½á¹¹£º
foo:first_name foo:last_name foo:address
µÇ¼ºó¸´ÖÆ
ÉÏÃæµÄÀý×ÓÖУ¬foo ¿ÉÄÜÊÇÒ»¸öÓû§µÄÓû§Ãû£¬ÆäÖеÄÿһÏÊÇÒ»¸öµ¥¶ÀµÄ key¡£Õâ¾ÍÔöÌíÁË ³ö´íµÄ¿Õ¼ä£¬ºÍһЩ²»ÐëÒªµÄ key¡£Ê¹Óà hash È¡´ú°É£¬Äã»á¾ªÑȵط¢Ã÷¾¹È»Ö»ÐèÒªÒ»¸ö key £º
127.0.0.1:6379> HSET foo first_name 'Joe' (integer) 1 127.0.0.1:6379> HSET foo last_name 'Engel' (integer) 1 127.0.0.1:6379> HSET foo address '1 Fanatical Pl' (integer) 1 127.0.0.1:6379> HGETALL foo 1) 'first_name' 2) 'Joe' 3) 'last_name' 4) 'Engel' 5) 'address' 6) '1 Fanatical Pl' 127.0.0.1:6379> HGET foo first_name 'Joe'
µÇ¼ºó¸´ÖÆ
5¡¢ÉèÖà key ÖµµÄ´æ»îʱ¼ä
ÎÞÂÛʲôʱ¼ä£¬Ö»ÒªÓпÉÄܾÍʹÓÃkey³¬Ê±µÄÓÅÊÆ¡£Ò»¸öºÜºÃµÄÀý×Ó¾ÍÊÇÖü´æһЩÖîÈçÔÝʱÈÏÖ¤keyÖ®ÀàµÄ¹¤¾ß¡£µ±ÄãÈ¥²éÕÒÒ»¸öÊÚȨkeyʱ¡ª¡ªÒÔOAUTHΪÀý¡ª¡ªÍ¨³£»á»ñµÃÒ»¸ö³¬Ê±Ê±¼ä¡£ÕâÑùÔÚÉèÖÃkeyµÄʱ¼ä£¬Éè³ÉͬÑùµÄ³¬Ê±Ê±¼ä£¬Redis¾Í»á×Ô¶¯ÎªÄãɨ³ý£¡¶ø²»ÔÙÐèҪʹÓÃKEYS *À´±éÀúËùÓеÄkeyÁË£¬ÔõôÑùºÜÀû±ã°É£¿
6¡¢ Ñ¡ÔñºÏÊʵĽÓÄÉÕ½ÂÔ
¼ÈȻ̸µ½ÁËɨ³ýkeyÕâ¸ö»°Ì⣬ÄÇÎÒÃǾÍÀ´ÁÄÁĽÓÄÉÕ½ÂÔ¡£µ± Redis µÄʵÀý¿Õ¼ä±»ÌîÂúÁËÖ®ºó£¬½«»áʵÑé½ÓÄÉÒ»²¿·Ökey¡£Æ¾Ö¤ÄãµÄʹÓ÷½·¨£¬ÎÒÇ¿ÁÒ½¨ÒéʹÓà volatile-lru Õ½ÂÔ¡ª¡ªÌõ¼þÊÇÄã¶ÔkeyÒѾÉèÖÃÁ˳¬Ê±¡£µ«ÈôÊÇÄãÔËÐеÄÊÇһЩÀàËÆÓÚ cache µÄ¹¤¾ß£¬²¢ÇÒûÓÐ¶Ô key ÉèÖó¬Ê±»úÖÆ£¬¿ÉÒÔ˼Á¿Ê¹Óà allkeys-lru ½ÓÄÉ»úÖÆ¡£ÎҵĽ¨ÒéÊÇÏÈÔÚÕâÀïÉó²éһϿÉÐеļƻ®¡£
7¡¢ÈôÊÇÄãµÄÊý¾ÝºÜÖ÷Òª£¬ÇëʹÓà Try/Except
ÈôÊDZØÐèÈ·±£Òªº¦ÐÔµÄÊý¾Ý¿ÉÒÔ±»·ÅÈëµ½ Redis µÄʵÀýÖУ¬ÎÒÇ¿ÁÒ½¨Ò齫Æä·ÅÈë try/except ¿éÖС£ÏÕЩËùÓеÄRedis¿Í»§¶Ë½ÓÄɵĶ¼ÊÇ¡°·¢Ëͼ´Íü¡±Õ½ÂÔ£¬Òò´Ë¾³£ÐèҪ˼Á¿Ò»¸ö key ÊÇ·ñÕæÕý±»·Åµ½ Redis Êý¾Ý¿âÖÐÁË¡£ÖÁÓÚ½« try/expect ·Åµ½ Redis ÏÂÁîÖеÄÖØ´óÐÔ²¢²»ÊDZ¾ÎÄÒª½²µÄ£¬ÄãÖ»ÐèÒªÖªµÀÕâÑù×ö¿ÉÒÔÈ·±£Ö÷ÒªµÄÊý¾Ý·Åµ½¸Ã·ÅµÄµØ·½¾Í¿ÉÒÔÁË¡£
8¡¢²»ÒªºÄ¾¡Ò»¸öʵÀý
ÎÞÂÛʲôʱ¼ä£¬Ö»ÒªÓпÉÄܾÍÊèÉ¢¶àredisʵÀýµÄÊÂÇéÁ¿¡£´Ó3.0.0°æ±¾×îÏÈ£¬Redis¾ÍÖ§³Ö¼¯ÈºÁË¡£Redis¼¯ÈºÔÊÐíÄã»ùÓÚkey¹æÄ£ÊèÉ¢³ö²¿·Ö°üÀ¨Ö÷/´ÓģʽµÄkey¡£ÍêÕûµÄ¼¯Èº±³ºóµÄ¡°Ð°Êõ¡±¿ÉÒÔÔÚÕâÀïÕÒµ½¡£µ«ÈôÊÇÄãÊÇÔÚÕҽ̳̣¬ÄÇÕâÀïÊÇÒ»¸öÔÙÊʺϲ»¹ýµÄµØ·½ÁË¡£ÈôÊDz»¿ÉÑ¡Ôñ¼¯Èº£¬Ë¼Á¿Ò»ÏÂÃüÃû¿Õ¼ä°É£¬È»ºó½«ÄãµÄkeyÊèÉ¢µ½¶à¸öʵÀýÖ®ÖС£¹ØÓÚÔõÑù·ÖÅÉÊý¾Ý£¬ÔÚredis.ioÍøÕ¾ÉÏÓÐÕâƪ¾«²ÊµÄ̸ÂÛ¡£
9¡¢ÄÚºËÔ½¶àÔ½ºÃÂ𣿣¡
ËäÈ»ÊÇ´íµÄ¡£Redis ÊÇÒ»¸öµ¥Ïß³ÌÀú³Ì£¬×ÝÈ»ÆôÓÃÁ˳¤ÆÚ»¯×î¶àÒ²Ö»»áÏûºÄÁ½¸öÄںˡ£³ý·ÇÄãÍýÏëÔÚһ̨Ö÷»úÉÏÔËÐжà¸öʵÀý¡ª¡ªÏ£ÍûÖ»»áÊÇÔÚ¿ª·¢²âÊÔµÄÇéÐÎÏ£¡¡ª¡ª²»È»µÄ»°¹ØÓÚÒ»¸ö Redis ʵÀýÊDz»ÐèÒª2¸öÒÔÉÏÄں˵ġ£
10¡¢¸ß¿ÉÓÃ
µ½ÏÖÔÚΪֹ Redis Sentinel ÒѾ¾ÓÉÁ˺ÜÖÜÈ«µÄ²âÊÔ£¬Ðí¶àÓû§ÒѾ½«ÆäÓ¦Óõ½ÁËÉú²úÇéÐÎÖУ¨°üÀ¨ ObjectRocket £©¡£ÈôÊÇÄãµÄÓ¦ÓÃÖضÈÒÀÀµÓÚ Redis £¬ÄǾÍÐèÒªÏë³öÒ»¸ö¸ß¿ÉÓüƻ®À´°ü¹ÜÆä²»»áµôÏß¡£ËäÈ»£¬ÈôÊDz»Ïë×Ô¼ºÖÎÀíÕâЩ¹¤¾ß£¬ObjectRocket ÌṩÁËÒ»¸ö¸ß¿ÉÓÃƽ̨£¬²¢Ìṩ7¡Á24СʱµÄÊÖÒÕÖ§³Ö£¬ÓÐÒâÏòµÄ»°¿ÉÒÔ˼Á¿Ò»Ï¡£
ÒÔÉϾÍÊÇLinuxÔËάÐèÒªÖªµÀµÄRedisÂÄÀúµÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡