Transactional ईमेल और SMS
Sign-up, रसीद और reset संदेश web app queue में डालती है और workers का पूल उन्हें भेजता है।
FIFO queues जो worker के मरने पर jobs नहीं खोतीं, और जिनमें producers और consumers parallel चलते हैं।
कोई भी सेवा consumers का इंतज़ार किए बिना काम जोड़ देती है।
असली HotKV कमांड और उदाहरण रिस्पॉन्स के साथ एक एनिमेटेड वॉकथ्रू। किसी भी कदम पर क्लिक करके वहां पहुंचें। कमांड और रिस्पॉन्स अंग्रेज़ी में ही रहते हैं, ठीक वैसे जैसे आप HotKV में टाइप करते और देखते हैं।
ईमेल, इमेज resize और webhooks जैसे background काम को बनाने वाले कोड और करने वाले कोड के बीच एक queue चाहिए। जो queue worker के बीच में crash होने पर job खो दे, वह queue न होने से भी बुरी है, क्योंकि किसी को पता ही नहीं चलता कि job गायब हो गई।
Lists एक सरल FIFO queue देती हैं। BLMOVE हर job को worker को सौंपते समय processing list में डाल देता है, इसलिए worker गायब हो जाए तो भी चल रही job कहीं न कहीं सुरक्षित रहती है। Producers और consumers को parallel worker threads संभालते हैं।
कोई भी सेवा consumers का इंतज़ार किए बिना काम जोड़ देती है।
LPUSH queue:emails "{\"to\":\"ada@example.com\",\"tpl\":\"welcome\"}"BLMOVE तब तक रुकता है जब तक कोई job उपलब्ध न हो, फिर उसे एक ही चरण में processing list में ले जाता है।
BLMOVE queue:emails queue:emails:processing RIGHT LEFT 0ईमेल चला गया। Job को processing list से हटा दिया जाता है।
LREM queue:emails:processing 1 "{\"to\":\"ada@example.com\",\"tpl\":\"welcome\"}"Worker 2 job के बीच में मर जाता है। उसकी job अब भी processing list में है, खोई नहीं।
LRANGE queue:emails:processing 0 -1एक monitor छोड़ी गई job को वापस queue में डाल देता है और कोई दूसरा worker उसे उठा लेता है।
LMOVE queue:emails:processing queue:emails LEFT RIGHTSign-up, रसीद और reset संदेश web app queue में डालती है और workers का पूल उन्हें भेजता है।
Uploads को thumbnail और transcoding के लिए queue में डाला जाता है, और crash हुआ transcoder कभी कोई फ़ाइल नहीं गिराता।
बाहर जाने वाले webhooks को queue में डालकर retry किया जाता है, उस request को रोके बिना जिसने उन्हें शुरू किया।
BRPOP के साथ LPUSH, और workers काम आने तक सोते रहते हैं।
LPUSHBRPOPBLMOVE हर job को atomically processing list को सौंपता है।
BLMOVELREMProducers और consumers को parallel worker threads संभालते हैं।
Acknowledgements, consumer groups और replay के लिए streams इस्तेमाल करें।
XADDXREADGROUPअगर आप jobs BLMOVE से लेते हैं, तो job processing list में पड़ी रहती है। एक monitor ऐसी किसी भी job को, जो वहाँ बहुत देर से है, वापस queue में डाल सकता है।
नहीं। BRPOP और BLMOVE job आने तक रुकते हैं, वैकल्पिक timeout के साथ।
Lists सबसे सरल queue हैं। Streams consumer groups, हर संदेश का acknowledgement और history जोड़ते हैं। Event streaming का use case देखें।
HotKV Redis प्रोटोकॉल बोलता है, इसलिए आप किसी मौजूदा क्लाइंट को इसकी ओर इंगित करके यही कमांड चला सकते हैं।