¸üÐÂʱ¼ä:2022Äê08ÔÂ17ÈÕ14ʱ47·Ö À´Ô´:ÀÖÓãµç¾º ä¯ÀÀ´ÎÊý:
ÏûÏ¢¶ÓÁÐ(Message Queue)£¬×ÖÃæÒâ˼¾ÍÊÇ´æ·ÅÏûÏ¢µÄ¶ÓÁС£×î¼òµ¥µÄÏûÏ¢¶ÓÁÐÄ£ÐͰüÀ¨3¸ö½ÇÉ«£º
ÏûÏ¢¶ÓÁУº´æ´¢ÏûÏ¢¡£
Éú²úÕߣº·¢ËÍÏûÏ¢µ½ÏûÏ¢¶ÓÁУ¬ÔÚÃëɱÈÎÎñÖиºÔðÅжÏÃëɱʱ¼äºÍ¿â´æ£¬Ð£ÑéÏû·ÑÕßȨÏÞÊÇ·ñÊÇÒ»ÈËÒ»µ¥£¬·¢ËÍÓÅ»ÝȯidºÍÓû§idµ½ÏûÏ¢¶ÓÁÐÖС£
Ïû·ÑÕߣº´ÓÏûÏ¢¶ÓÁлñÈ¡ÏûÏ¢²¢´¦ÀíÏûÏ¢£¬½ÓÊܵ½¶©µ¥ÏûÏ¢Ö®ºó£¬Íê³Éϵ¥¡£
RedisÌṩÁËÈýÖÖ²»Í¬µÄ·½Ê½À´ÊµÏÖÏûÏ¢¶ÓÁУº
list½á¹¹£º»ùÓÚList½á¹¹Ä£ÄâÏûÏ¢¶ÓÁС£
PubSub£º»ù±¾µÄµã¶ÔµãÏûϢģÐÍ¡£
Stream£º±È½ÏÍêÉÆµÄÏûÏ¢¶ÓÁÐÄ£ÐÍ¡£

ÏûÏ¢¶ÓÁÐ(Message Queue)£¬×ÖÃæÒâ˼¾ÍÊÇ´æ·ÅÏûÏ¢µÄ¶ÓÁС£¶øRedisµÄlistÊý¾Ý½á¹¹ÊÇÒ»¸öË«ÏòÁ´±í£¬ºÜÈÝÒ×Ä£Äâ³ö¶ÓÁÐЧ¹û¡£
¶ÓÁÐÊÇÈë¿ÚºÍ³ö¿Ú²»ÔÚÒ»±ß£¬Òò´ËÎÒÃÇ¿ÉÒÔÀûÓãºLPUSH ½áºÏ RPOP¡¢»òÕß RPUSH ½áºÏ LPOPÀ´ÊµÏÖ¡£
²»¹ýҪעÒâµÄÊÇ£¬µ±¶ÓÁÐÖÐûÓÐÏûϢʱRPOP»òLPOP²Ù×÷»á·µ»Ønull£¬²¢²»ÏñJVMµÄ×èÈû¶ÓÁÐÄÇÑù»á×èÈû²¢µÈ´ýÏûÏ¢¡£Òò´ËÕâÀïÓ¦¸ÃʹÓÃBRPOP»òÕßBLOPOÀ´ÊµÏÖ×èÈûЧ¹û¡£

ListµÄÏûÏ¢¶ÓÁпÉÀûÓÃRedis´æ´¢£¬²»ÊÜÏÞÓÚJVMÄÚ´æÉÏÏÞ£¬ÊÇ»ùÓÚ»ùÓÚRedisµÄ³Ö¾Ã»¯»úÖÆ£¬Êý¾Ý°²È«ÐÔÓб£Ö¤£¬Í¬Ê±Ò²¿ÉÒÔÂú×ãÏûÏ¢¶ÓÁеÄÓÐÐòÐÔ¡£µ«Ö»Ö§³Öµ«Ïû·ÑÕߣ¬ÎÞ·¨±ÜÃâÏûÏ¢¶ªÊ§ÊÇËü×î´óµÄÎÊÌâ¡£
PubSub(·¢²¼¶©ÔÄ)ÊÇRedis2.0°æ±¾ÒýÈëµÄÏûÏ¢´«µÝÄ£ÐÍ¡£¹ËÃû˼Ò壬Ïû·ÑÕß¿ÉÒÔ¶©ÔÄÒ»¸ö»ò¶à¸öchannel£¬Éú²úÕßÏò¶ÔÓ¦channel·¢ËÍÏûÏ¢ºó£¬ËùÓж©ÔÄÕß¶¼ÄÜÊÕµ½Ïà¹ØÏûÏ¢¡£¶ÔÓ¦channel·¢ËÍÏûÏ¢ºó£¬ËùÓж©ÔÄÕß¶¼ÄÜÊÕµ½Ïà¹ØÏûÏ¢¡£
SUBSCRIBE channel [channel] £º¶©ÔÄÒ»¸ö»ò¶à¸öƵµÀ¡£
PUBLISH channel msg £ºÏòÒ»¸öƵµÀ·¢ËÍÏûÏ¢¡£
PSUBSCRIBE pattern[pattern] £º¶©ÔÄÓëpattern¸ñʽƥÅäµÄËùÓÐÆµµÀ¡£

»ùÓÚPubSubµÄÏûÏ¢¶ÓÁвÉÓ÷¢²¼¶©ÔÄÄ£ÐÍ£¬Ö§³Ö¶àÉú²ú¡¢¶àÏû·Ñ£¬µ«Ò²Óв»Ö§³ÖÊý¾Ý³Ö¾Ã»¯¡¢ÎÞ·¨±ÜÃâÏûÏ¢¶ªÊ§£¬ÏûÏ¢¶Ñ»ýÓÐÉÏÏÞµÄȱµã£¬³¬³öʱÊý¾Ý»á¶ªÊ§¡£

ÀýÈ磺

Stream¶ÁÈ¡ÏûÏ¢µÄ·½Ê½Ö®Ò»£ºXREAD

ÀýÈ磺


ÔÚÒµÎñ¿ª·¢ÖУ¬ÎÒÃÇ¿ÉÒÔÑ»·µÄµ÷ÓÃXREAD×èÈû·½Ê½À´²éѯ×îÐÂÏûÏ¢£¬´Ó¶øÊµÏÖ³ÖÐø¼àÌý¶ÓÁеÄЧ¹û£¬Î±´úÂëÈçÏ£º

×¢Ò⣺µ±ÎÒÃÇÖ¸¶¨ÆðʼIDΪ$ʱ£¬´ú±í¶ÁÈ¡×îеÄÏûÏ¢£¬Èç¹ûÎÒÃÇ´¦ÀíÒ»ÌõÏûÏ¢µÄ¹ý³ÌÖУ¬ÓÖÓг¬¹ý1ÌõÒÔÉϵÄÏûÏ¢µ½´ï¶ÓÁУ¬ÔòÏ´λñȡʱҲֻÄÜ»ñÈ¡µ½×îеÄÒ»Ìõ£¬»á³öÏÖ©¶ÁÏûÏ¢µÄÎÊÌâ¡£
STREAMÀàÐÍÏûÏ¢¶ÓÁеÄXREADÃüÁÏûÏ¢¿É»ØËÝ£¬Ò»¸öÏûÏ¢¿ÉÒÔ±»¶à¸öÏû·ÑÕß¶ÁÈ¡£¬Í¬Ê±¿ÉÄÜ×èÈû¶ÁÈ¡£¬ÓÐÏûϢ©¶ÁµÄ·çÏÕ¡£
»ùÓÚStreamµÄÏûÏ¢¶ÓÁÐ-Ïû·ÑÕß×é
Ïû·ÑÕß×é(Consumer Group)£º½«¶à¸öÏû·ÑÕß»®·Öµ½Ò»¸ö×éÖУ¬¼àÌýͬһ¸ö¶ÓÁС£¾ß±¸ÏÂÁÐÌØµã£º
1.ÏûÏ¢·ÖÁ÷£º¶ÓÁÐÖеÄÏûÏ¢»á·ÖÁ÷¸ø×éÄڵIJ»Í¬Ïû·ÑÕߣ¬¶ø²»ÊÇÖØ¸´Ïû·Ñ£¬´Ó¶ø¼Ó¿ìÏûÏ¢´¦ÀíµÄËÙ¶È¡£
2.ÏûÏ¢±êʾ£ºÏû·ÑÕß×é»áά»¤Ò»¸ö±êʾ£¬¼Ç¼×îºóÒ»¸ö±»´¦ÀíµÄÏûÏ¢£¬ÄÄÅÂÏû·ÑÕßå´»úÖØÆô£¬»¹»á´Ó±êʾ֮ºó¶ÁÈ¡ÏûÏ¢¡£È·±£Ã¿Ò»¸öÏûÏ¢¶¼»á±»Ïû·Ñ¡£
3.ÏûϢȷÈÏ£ºÏû·ÑÕß»ñÈ¡ÏûÏ¢ºó£¬ÏûÏ¢´¦ÓÚpending״̬£¬²¢´æÈëÒ»¸öpending-list¡£µ±´¦ÀíÍê³ÉºóÐèҪͨ¹ýXACKÀ´È·ÈÏÏûÏ¢£¬±ê¼ÇÏûϢΪÒÑ´¦Àí£¬²Å»á´Ópending-listÒÆ³ý¡£
´´½¨Ïû·ÑÕß×飺
XGROUP CREATE key groupName ID [MKSTREAM]
key£º¶ÓÁÐÃû³Æ
groupName£ºÏû·ÑÕß×éÃû³Æ
ID£ºÆðʼID±êʾ£¬$´ú±í¶ÓÁÐÖÐ×îºóÒ»¸öÏûÏ¢£¬0Ôò´ú±í¶ÓÁÐÖеÚÒ»¸öÏûÏ¢
MKSTREAM£º¶ÓÁв»´æÔÚʱ×Ô¶¯´´½¨¶ÓÁС£
ÆäËü³£¼ûÃüÁ
# ɾ³ýÖ¸¶¨µÄÏû·ÑÕß×é XGROUP DESTORY key groupName # ¸øÖ¸¶¨µÄÏû·ÑÕß×éÌí¼ÓÏû·ÑÕß XGROUP CREATECONSUMER key groupname consumername # ɾ³ýÏû·ÑÕß×éÖеÄÖ¸¶¨Ïû·ÑÕß XGROUP DELCONSUMER key groupname consumername
´ÓÏû·ÑÕß×é¶ÁÈ¡ÏûÏ¢£º
XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds] [NOACK] STREAMS key [key ...] ID [ID ...]
group£ºÏû·Ñ×éÃû³Æ
consumer£ºÏû·ÑÕßÃû³Æ£¬Èç¹ûÏû·ÑÕß²»´æÔÚ£¬»á×Ô¶¯´´½¨Ò»¸öÏû·ÑÕß
count£º±¾´Î²éѯµÄ×î´óÊýÁ¿
BLOCK milliseconds£ºµ±Ã»ÓÐÏûϢʱ×µÈ´ýʱ¼ä
NOACK£ºÎÞÐèÊÖ¶¯ACK£¬»ñÈ¡µ½ÏûÏ¢ºó×Ô¶¯È·ÈÏ
STREAMS key£ºÖ¸¶¨¶ÓÁÐÃû³Æ
ID£º»ñÈ¡ÏûÏ¢µÄÆðʼID£º">"£º´ÓÏÂÒ»¸öδÏû·ÑµÄÏûÏ¢¿ªÊ¼
ÆäËü£º¸ù¾ÝÖ¸¶¨id´Ópending-listÖлñÈ¡ÒÑÏû·Ñµ«Î´È·ÈϵÄÏûÏ¢£¬ÀýÈç0£¬ÊÇ´Ópending-listÖеĵÚÒ»¸öÏûÏ¢¿ªÊ¼¡£
Ïû·ÑÕß¼àÌýÏûÏ¢µÄ»ù±¾Ë¼Â·£º

STREAMÀàÐÍÏûÏ¢¶ÓÁеÄXREADGROUPÃüÁîÌØµã£ºÏûÏ¢¿É»ØËÝ£¬Ò»¸öÏûÏ¢¿ÉÒÔÖ»Äܱ»Ò»¸öÏû·ÑÕß¶ÁÈ¡¡£¿ÉÒÔ×èÈû¶ÁÈ¡.ûÓÐÏûϢ©¶ÁµÄ·çÏÕ£¬ÓÐÏûϢȷÈÏ»úÖÆ£¬±£Ö¤ÏûÏ¢ÖÁÉÙ±»Ïû·ÑÒ»´Î¡£
±±¾©Ð£Çø