ऑनलाइन दुकानें
प्रोडक्ट पेज, कीमतें और स्टॉक का स्तर हर सेकंड हज़ारों बार पढ़े जाते हैं, और catalog बदलने पर tag के हिसाब से refresh होते हैं।
अपना सबसे ज़्यादा इस्तेमाल होने वाला डेटा मेमोरी में रखें और ऐसे इंजन पर, जो हर कोर को काम में लगाता है, reads का जवाब एक मिलीसेकंड से काफ़ी कम समय में पाएँ।
Hit होने पर जवाब सीधे मेमोरी से आता है। डेटाबेस को छुआ नहीं जाता।
असली HotKV कमांड और उदाहरण रिस्पॉन्स के साथ एक एनिमेटेड वॉकथ्रू। किसी भी कदम पर क्लिक करके वहां पहुंचें। कमांड और रिस्पॉन्स अंग्रेज़ी में ही रहते हैं, ठीक वैसे जैसे आप HotKV में टाइप करते और देखते हैं।
जिस डेटा को हर सेकंड हज़ारों बार पढ़ा जाता है, उसके लिए डेटाबेस तक पहुँचना धीमा और महँगा होता है। हर page view, API कॉल या dashboard refresh वही query दोहराता है, और आपकी application से बहुत पहले डेटाबेस bottleneck बन जाता है।
HotKV डेटाबेस के आगे बैठता है और नतीजों को मेमोरी में रखता है। आपकी application पहले HotKV से पढ़ती है और miss होने पर ही डेटाबेस तक जाती है। HotKV कमांड कई threads पर एक साथ चलाता है, इसलिए व्यस्त cache हर क्लाइंट को एक ही कोर से नहीं गुज़ारता। और जब पीछे का डेटा बदलता है, तो tags से आप entries के पूरे समूह को invalidate कर सकते हैं।
Hit होने पर जवाब सीधे मेमोरी से आता है। डेटाबेस को छुआ नहीं जाता।
GET product:1001Miss पर application डेटाबेस से एक बार पढ़ती है और नतीजे को पाँच मिनट के लिए cache कर देती है।
SET product:2002 "{\"name\":\"Oak desk\",\"price\":420}" EX 300लाइटिंग प्रोडक्ट दिखाने वाले हर cached पेज पर एक ही tag लगा होता है।
TAG.SET product:1001 catalog:lightingकीमतें बदल गईं। इस tag वाली हर key की सूची लें और उन सबको एक pipeline में delete कर दें।
TAG.MEMBERS catalog:lightingएक flash token, जो पहले से सेट है और नैनोसेकंड की सटीकता के साथ 250 ms बाद गायब हो जाना चाहिए।
NEXPIRE flash:token:9 250000000प्रोडक्ट पेज, कीमतें और स्टॉक का स्तर हर सेकंड हज़ारों बार पढ़े जाते हैं, और catalog बदलने पर tag के हिसाब से refresh होते हैं।
लोकप्रिय endpoints के जवाब छोटे TTL के साथ cache होते हैं, इसलिए ट्रैफ़िक का उछाल डेटाबेस की जगह मेमोरी से टकराता है।
Render किए गए fragments और लेख का metadata कुछ मिनटों के लिए cache होता है, और editor के publish करते ही tag से invalidate हो जाता है।
EXPIRE और PEXPIRE वैसे ही काम करते हैं जैसा आप उम्मीद करते हैं। NEXPIRE नैनोसेकंड की सटीकता जोड़ता है।
EXPIREPEXPIRENEXPIRETAG.SET से keys पर लेबल लगाएँ, फिर किसी लेबल वाली हर key खोजें।
TAG.SETTAG.MEMBERSबड़े payloads को compress किया जा सकता है, ताकि आपका ज़्यादा working set मेमोरी में समा सके।
कमांड parallel threads पर चलते हैं, इसलिए throughput कोर के साथ बढ़ता है। आँकड़े Performance पेज पर हैं।
GETMGETHotKV Redis protocol (RESP2 और RESP3) बोलता है, इसलिए सामान्य Redis क्लाइंट इससे कनेक्ट हो जाते हैं। जिन कमांड पर आप निर्भर हैं, उन्हें कमांड संदर्भ में देख लें।
Cache करते समय keys को TAG.SET से tag करें, फिर TAG.MEMBERS कॉल करें और जो लौटे उसे delete कर दें।
यह HotKV के प्रकाशित benchmark का pipelined GET throughput है। तरीका और hardware Performance पेज पर हैं।
HotKV Redis प्रोटोकॉल बोलता है, इसलिए आप किसी मौजूदा क्लाइंट को इसकी ओर इंगित करके यही कमांड चला सकते हैं।