±à¼ÍƼö: |
±¾ÎĽéÉÜÁË
redis ÊÂÎñµÄ¸ÅÄîÃèÊö¡¢ÃüÁîºÍʾÀý£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×Ô²©¿ÍÔ°£¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼¡¢ÍƼö¡£ |
|
¡¡1.ÃèÊö
¡¡¡¡¡¡redis ÊÂÎñµ¥¶ÀµÄ¸ôÀë²Ù×÷£ºÊÂÎñÖеÄËùÓÐÃüÁî¶¼»áÐòÁл¯¡¢°´Ë³ÐòÖ´ÐС£ÊÂÎñÔÚÖ´Ðйý³ÌÖУ¬²»»á±»ÆäËû¿Í»§¶Ë·¢Ë͹ýÀ´µÄÃüÁîÇëÇóËù´ò¶Ï¡£
¡¡¡¡redis ÊÂÎñûÓиôÀë¼¶±ðµÄ¸ÅÄ¶ÓÁÐÖеÄÃüÁîûÓÐÌύ֮ǰ¶¼²»»áʵ¼ÊµÄ±»Ö´ÐУ¬ÒòΪÊÂÎñÌύǰÈκÎÖ¸Áî¶¼²»»á±»Êµ¼ÊÖ´ÐУ¬Ò²¾Í²»´æÔÚ¡°ÊÂÎñÄڵIJéѯ¿´µ½ÊÂÎñÀïµÄ¸üУ¬ÔÚÊÂÎñÍâ²éѯ²»ÄÜ¿´µ½¡±¡£
¡¡¡¡redis ÊÂÎñ²»±£Ö¤Ô×ÓÐÔ£ºredis ͬһ¸öÊÂÎñÖÐÈç¹ûÓÐÒ»ÌõÃüÁîÔËÐÐʱִÐÐʧ°Ü£¬ÆäºóµÄÃüÁîÈÔÈ»»á±»Ö´ÐУ¬Ã»Óлعö¡£
¡¡2.ÃüÁî
¡¡¡¡Multi¡¢Exec¡¢DiscardºÍWatchÊÇRedisÊÂÎñµÄÏà¹ØÃüÁî¡£
¡¡¡¡Multi£º±ê¼ÇÒ»¸öÊÂÎñ¿éµÄ¿ªÊ¼¡£Multi ÃüÁîÓÃÓÚ¿ªÆôÒ»¸öÊÂÎñ£¬Ëü×ÜÊÇ·µ»Ø OK ¡£ Multi
Ö´ÐÐÖ®ºó£¬ ¿Í»§¶Ë¿ÉÒÔ¼ÌÐøÏò·þÎñÆ÷·¢ËÍÈÎÒâ¶àÌõÃüÁ ÕâЩÃüÁî²»»áÁ¢¼´±»Ö´ÐУ¬ ¶øÊDZ»·Åµ½Ò»¸ö¶ÓÁÐÖУ¬
µ± ExecÃüÁî±»µ÷ÓÃʱ£¬ ËùÓжÓÁÐÖеÄÃüÁî²Å»á±»Ö´ÐС£ÁíÒ»·½Ã棬 ͨ¹ýµ÷Óà Discard£¬ ¿Í»§¶Ë¿ÉÒÔÇå¿ÕÊÂÎñ¶ÓÁУ¬
²¢·ÅÆúÖ´ÐÐÊÂÎñ¡£
¡¡¡¡Exec£ºÖ´ÐÐËùÓÐÊÂÎñ¿éÄÚµÄÃüÁî¡£ÃüÁîµÄ»Ø¸´ÊÇÒ»¸öÊý×飬 Êý×éÖеÄÿ¸öÔªËØ¶¼ÊÇÖ´ÐÐÊÂÎñÖеÄÃüÁîËù²úÉúµÄ»Ø¸´¡£
ÆäÖУ¬ »Ø¸´ÔªËصÄÏȺó˳ÐòºÍÃüÁî·¢Ë͵ÄÏȺó˳ÐòÒ»Ö¡£µ±¿Í»§¶Ë´¦ÓÚÊÂÎñ״̬ʱ£¬ ËùÓд«ÈëµÄÃüÁî¶¼»á·µ»ØÒ»¸öÄÚÈÝΪ
Queued µÄ״̬»Ø¸´£¨status reply£©£¬ ÕâЩ±»Èë¶ÓµÄÃüÁÔÚ Exec ÃüÁî±»µ÷ÓÃʱִÐС£
¡¡¡¡Discard£ºÈ¡ÏûÊÂÎñ£¬·ÅÆúÖ´ÐÐÊÂÎñ¿éÄÚµÄËùÓÐÃüÁî¡£µ±Ö´ÐÐDiscardÃüÁîʱ£¬ÊÂÎñ»á±»·ÅÆú£¬ÊÂÎñ¶ÓÁлᱻÇå¿Õ£¬²¢ÇÒ¿Í»§¶Ë»á´ÓÊÂÎñ״̬ÖÐÍ˳ö¡£
¡¡¡¡Watch£º¼àÊÓÒ»¸ö»ò¶àÉÙKey£¬Èç¹ûÔÚÊÂÎñÖ´ÐÐ֮ǰÕâ¸ö»òÕâЩKey±»ÆäËûÃüÁîËù¸Ä¶¯£¬ÄÇôÊÂÎñ½«±»´ò¶Ï¡£
¡¡¡¡UnWatch£ºÈ¡ÏûWatchÃüÁî¶ÔËùÓÐKeyµÄ¼àÊÓ¡£
¡¡¡¡3.ʾÀý
¡¡3.1. Õý³£Ö´ÐÐʾÀý
¡¡¡¡Ê×ÏÈÎÒÃÇÇå¿ÕÊý¾Ý¿âÄÚÈÝ£¬²é¿´ÄÚÈÝÄÜ¿´µ½Êý¾Ý¿âΪ¿Õ¡£È»ºóMulti ¿ªÆôÒ»ÊÂÎñ£¬ÉèÖÃÁ½¸ö Key¡¢ValueÖµ£¬Exec
Ö´ÐÐÊÂÎñ¡£ÎÒÃÇ¿´µ½Ö´ÐÐÊÂÎñʱ£¬Í¬Ê±·µ»ØÁ½ÃüÁîµÄÖ´Ðнá¹û¡£Í¨¹ý²éѯÊý¾Ý¿âÕý³£±£´æÁ½Êý¾ÝÄÚÈÝ¡£
¡¡ ¡¡
¡¡3.2. ·ÅÆúÊÂÎñʾÀý
¡¡¡¡½ÓÏÂÀ´£¬ÎÒÃÇÔÙÀ´ÊÔÏ£¬·ÅÆúÊÂÎñʾÀý£¬Ê×ÏÈÎÒÃÇÇå¿ÕÊý¾Ý¿âÄÚÈÝ£¬²é¿´ÄÚÈÝÄÜ¿´µ½Êý¾Ý¿âΪ¿Õ¡£È»ºóMulti
¿ªÆôÒ»ÊÂÎñ£¬ÉèÖÃÁ½¸ö Key¡¢ValueÖµ£¬´Ëʱ£¬ÎÒÃÇÖ´ÐÐDiscardÃüÁ·ÅÆúÊÂÎñ¡£Í¨¹ý²é¿´Êý¾Ý¿âÖÐÄÚ¿Õ£¬ÎÒÃÇ¿ÉÒÔ¿´µ½Êý¾Ý¿âÖл¹ÊÇΪ¿Õ¡£
¡¡
¡¡3.3. È«ÌåÁ¬×øÊ¾Àý
¡¡¡¡È«ÌåÁ¬×øÖ¸µÄÊÇÊ²Ã´ÄØ£¿¾ÍÊÇ˵ÆäÖÐÓÐÒ»ÌõÃüÁî±àÒëʱ´íÎó£¬Õû¸öϵÁÐÃüÁî¶¼½«²»»á±»Ö´ÐС£
¡¡
¡¡3.4. Ô©Í·Õ®Ö÷ʾÀý
¡¡¡¡Ô©Í·Õ®Ö÷Ö¸µÄÊÇÊ²Ã´ÄØ£¿¾ÍÊÇ˵ÆäÖÐÓÐÒ»ÌõÃüÁîÔËÐÐʱÓÐÎÊÌ⣬ϵÁÐÖÐûÎÊÌâµÄÃüÁî»áÖ´ÐУ¬ÓÐÎÊÌâµÄÃüÁî²»»á³É¹¦Ö´ÐС£
¡¡ ¡¡
¡¡3.5. Watch¼à¿Ø
¡¡¡¡Watch ÃüÁî¿ÉÒÔΪ Redis ÊÂÎñÌṩ check-and-set £¨CAS£©ÐÐΪ¡£±»
Watch µÄ¼ü»á±»¼àÊÓ£¬²¢»á·¢¾õÕâЩ¼üÊÇ·ñ±»¸Ä¶¯¹ýÁË¡£ Èç¹ûÓÐÖÁÉÙÒ»¸ö±»¼àÊӵļüÔÚ Exec Ö´ÐÐ֮ǰ±»ÐÞ¸ÄÁË£¬
ÄÇôÕû¸öÊÂÎñ¶¼»á±»È¡Ïû£¬ Exec ·µ»Ønil-replyÀ´±íʾÊÂÎñÒѾʧ°Ü¡£
¡¡¡¡ÏÂÃæÎÒÃÇÒÔÐÅÓÿ¨Õ˺ŽáÓàºÍÕ®ÎñΪÀý£º
¡¡¡¡ÏȳõʼÕ˺ŽáÓàΪ100£¬Õ®ÎñΪ0¡£Ïû·Ñ20£¬Õ˺ŽáÓà¼õ20£¬Õ®ÎñÔö¼Ó20¡£Ê×ÏÈWatch¼àÊÓÕ˺ŽáÓ࣬Ȼºó¿ªÆôÊÂÎñ£¬¶ÔÕ˺ŽáÓ༰ծÎñ½øÐвÙ×÷¡£
¡¡¡¡µ±ÎÞ¼ÓÈû´Û¸Äʱ£¬Õý³£Ö´Ðнá¹û£¬Õ˺ŽáÓàΪ80£¬Õ®Îñ20¡£
¡¡ ¡¡
¡¡¡¡µ±Watch¼àÊÓÕ˺ŽáÓ࣬ÓмÓÈû´Û¸ÄÕ˺ŽáÓ࣬±ÈÈçÏòÕ˺ųäÖµ100£¬Õ˺ŽáÓà¸ÄΪ180ʱ£¬ÔÙÖ´ÐÐһϵÁÐÃüÁִÐÐÊÂÎñʱ£¬µÃµ½µÄ½á¹û½«ÊÇδÄÜÕý³£¸üвÙ×÷¡£
¡¡¡¡
¡¡
¡¡4.×ܽá
¡¡¡¡ÎÒÃÇ·¢ÏÖ Redis ¶ÔÓÚÊÂÎñ£¬²¿·ÖÖ§³Ö£¬²»ÄÜÏñSQL ServerµÈ¹ØÏµÊý¾Ý¿âµÄǿһÖÂÐÔ¡£WatchÖ¸ÁÀàËÆÀÖ¹ÛËø£¬ÊÂÎñÌύʱ£¬Èç¹ûKeyµÄÖµÒѱ»±ðµÄ¿Í»§¶Ë¸Ä±ä£¬±ÈÈçij¸öListÒѱ»±ðµÄ¿Í»§¶ËPush/Pop¹ýÁË£¬Õû¸öÊÂÎñ¶ÓÁж¼²»»á±»Ö´ÐС£Í¨¹ýWatchÃüÁîÔÚÊÂÎñÖ´ÐÐ֮ǰ¼à¿Ø¶à¸öKeys£¬ÌÈÈôÔÚWatchÖ®ºóÓÐÈκÎKeyµÄÖµ·¢ÉúÁ˸ı䣬ExecÃüÁîÖ´ÐеÄÊÂÎñ¶¼½«±»·ÅÆú£¬Í¬Ê±·µ»ØNullmulti-bulkÓ¦´ðÒÔ֪ͨµ÷ÓÃÕßÊÂÎñÖ´ÐÐʧ°Ü¡£
|