Logo GH

प्रौद्योगिकी और बुनियादी ढांचा → रेडिस: इन-मेमोरी समाधान

रेडिस: इन-मेमोरी समाधान

1) जहां रेडिस उपयुक्त है

Redis समृद्ध डेटा संरचनाओं के साथ एक उच्च गति इन-मेमोरी कुंजी-मूल्य भंडारण है। विशिष्ट परिदृश्य:
  • कैश (रीड-थ्रू/एक तरफ, टीटीएल, एसडब्ल्यूआर) और सत्र।
  • काउंटर और कोटा: दर सीमित, धोखाधड़ी-विरोधी, अभियान की सीमा।
  • लीडरबोर्ड/रेटिंग (ZSet), "शीर्ष N" सिफारिशें।
  • घटना कतारें/बसें (स्ट्रीम/PubSub), आउटबॉक्स/इनबॉक्स, रिट्रे।
  • पहचान (टीटीएल के साथ कुंजी), डी-डुप वेबहूक।
  • जियो (निकटतम बिन्दुओं के लिए खोज), बिटमैप (फ्लैग्स, डीएयू)।
  • एलियास/टोकन और अल्पकालिक प्राधिकरण कैश।
💡 महत्वपूर्ण: नकद शेष और महत्वपूर्ण आक्रमणकारियों के लिए, रेडिस का उपयोग केवल डीबीएमएस/खाते में "सत्य के स्रोत" के साथ एक रीड एक्सेलेरेटर या जर्नल/कैश के रूप में किया जाता है।

2) डेटा संरचनाएं और उन्हें कब लागू करना है

वाक्यांश: मान/काउंटर ('INCRBY'), पहचान कुंजी.

हैश: प्रोफाइल/कॉन्फ़िग्स का समुच्चय, "हल्के" वस्तुओं का भंडारण।

सूची: सरल कतारें (लेकिन बिना रीप्ले/ऑफसेट शब्दार्थ के)।

सेट: अद्वितीय तत्व, डीडुप्लीकेशन।

ZSet: गति से छंटाई (लीडबोर्ड, TTL कैलेंडर - "आस्थगित" घटनाएँ)।

स्ट्रीम: उपभोक्ता समूहों के साथ स्थिर कतारें, 'XREADGROUP '/रीप्ले - वेबहुक, सीडीसी, रीट्रे के लिए।

जियो: 'GEOADD/JOREADIUS' - निकटतम अंक/व्यापारी।

बिटमैप/बिटफील्ड: झंडे की श्रृंखला (दिन के अनुसार लॉगिन, DAU/WAU)।

HyperLogLog: अनुमानित अद्वितीय (UU) मेमोरी पर सस्ता है।

ब्लूम/कोयल (मॉड्यूल): त्वरित उपलब्धता जांच, स्रोत को "मिस" कम करें।

मॉड्यूल:
  • RedisJSON (JSON दस्तावेज़), RediSearch (अनुक्रमण/खोज), RedisBloom (संभाव्य संरचनाएं), टाइमसीरीज़ (मैट्रिक्स/एकत्रीकरण)।

3) कुंजी, टीटीएल और मेमोरी पॉलिसी

नामकरण और विभाजन:

tenant:{t}:domain:{d}:{entity}:{id}:v{schema}    region={R}    currency={C}    lang={L}

वर्शनिंग ('वीएन'), केवल सार्थक आयाम (क्षेत्र/मुद्रा/भाषा/किरायेदार) शामिल हैं।

प्रति-किरायेदार कुंजी रिक्त स्थान को अलग करें।

टीटीएल और "ताजगी":
  • भगदड़ से बचने के लिए एक TTL मैट्रिक्स (सेक/मिनट/घंटा) का उपयोग करें, भगदड़ से बचने के लिए जिटर ( 10-20%) जोड़ें।
  • हॉट कीज़के लिए - रिफ्रेश-फॉरवर्ड और सिंगल-फ़्लाइट (एक लीडर अपडेट)।
प्रीमेशन पॉलिसी (मैक्समेमोरी-पॉलिसी):
  • TTL निर्भरता के बिना 'allkeys-lru/lfu' एक साझा कैश है।
  • 'वोलाटिल-एलआरयू/एलएफयू' - केवल टीटीएल के साथ कुंजी।
  • 'निवेश' - ओवरफ्लो पर विफलता लिखें (महत्वपूर्ण कतारों/काउंटरों के लिए सुरक्षित)।
  • स्क्रिप्ट के लिए चुनें और हमेशा 'बेदखल (_ keys)' मॉनीटर करें।

4) लेन-देन, पाइपलाइन और स्क्रिप्ट

पाइपलाइन: आरटीटी, समूह 10-100 टीमों को कम करें।

लेनदेन (MULT/EXEC) - रीड को अलग न करें, लेकिन बैच को परमाणु रूप से निष्पादित करें।

इष्टतम लॉकिंग: 'वॉच की' → मल्टी/EXEC → जाँच करें।

लुआ स्क्रिप्ट: सर्वर साइड पर परमाणु तर्क (दर सीमा, ताले, समग्र संचालन)।

💡 लुआ स्क्रिप्ट सिंगल-नोड रेडिस के लिए अच्छे हैं; क्लस्टर में - सुनिश्चित करें कि सभी कुंजियाँ एक हैश स्लॉट में आती हैं (हैश टैग '{...}')।

5) कतारें और बसें: सूची बनाम स्ट्रीम

सूची + 'BRPOP' - सरल, लेकिन कोई उपभोक्ता समूह, ऑफसेट/रीप्ले, ड्रॉप के लिए कमजोर प्रतिरोध।

स्ट्रीम: 'XADD → XREADGROUP → XACK', रीट्री-डेडलेटर (एन मिनट में नहीं लिया गया), कुंजी द्वारा विभाजन। PSP/KYC वेबहूक, आस्थगित भुगतान/सूचनाओं के लिए अनुशंसित।

प्राथमिकता कतारें: प्राथमिकता से कई धाराएं, उपभोक्ता पहले स्थान पर उच्च से "चूसते" हैं।

आस्थगित कार्य: ZSet जहाँ स्कोर = timestamp; आवधिक 'ZRANGEBYSCORE' - अब स्ट्रीम में स्थानांतरित कर दिया गया है।

6) उच्च उपलब्धता और मापनीयता

प्रतिकृति: master→replica (पढ़ने के पैमाने)।

प्रहरी: स्वचालित विफलता मास्टर, खोज, ग्राहक यूआरआई।

रेडिस क्लस्टर: 16384-स्लॉट शार्डिंग, क्षैतिज स्केल-आउट। रैप कुंजियाँ जो '{ord: 123}' हैश टैग में कई संरचनाओं का उपयोग करती हैं.

पैटर्न:
  • कैश/सत्र के लिए - क्लस्टर/प्रतिकृति, 'क्लाइंट-साइड हैशिंग' एसडीके समर्थित।
  • कतारों/धाराओं के लिए - क्रॉस-स्लॉट संचालन को कम करें; डोमेन कुंजियों द्वारा विभाजन।

7) दृढ़ ता: आरडीबी, एओएफ और बैकअप

आरडीबी (स्नैपशॉट): तेज, अधिक किफायती; पिछले सेकंड/मिनट के नुकसान का जोखिम।

एओएफ (पत्रिका): कम नुकसान; 'everysec/हमेशा' मोड। एओएफ संपीड़न और आवधिक पुनरावृत्ति।

हाइब्रिड: आरडीबी + एओएफ - तेजी से वसूली + मध्यम नुकसान।

बैकअप: भंडारण पर आपत्ति करने के लिए AOF के स्नैपशॉट और प्रतियां; नियमित रूप से वसूली की जाँच क

महत्वपूर्ण कतारों/पहचान के लिए, AOF 'everysec' + प्रतिकृति का चयन करें।

8) सुरक्षा और अनुपालन

AUTH/ACL: प्रति-एप्लिकेशन की भूमिकाएं, "खतरनाक" कमांड ('FLUSHALL,' 'KEYS') का निषेध।

टीएलएस से क्लाइंट-सर्वर और इंटर-नोड लिंक; फिक्स्ड एग्रेस-आईपी।

नेटवर्क विभाजन: निजी सबनेट, एसजी/एनएसीएल; केवल आवश्यक सेवाओं/नेमस्पेस से पहुँच।

रहस्य लॉग न करें; Redis में PAN/PII - टोकन/डेरिवेटिव केवल।

मुख्य आदेश: 'KEYS' से बचें - 'SCAN' का उपयोग करें।

9) अवलोकन और एसएलओ

कुंजी मेट्रिक्स:
  • लेटेंसी (P95/P99), 'तत्काल _ ops _ per _ sec', 'कनेक्टेड _ क्लाइंट'।
  • हिट अनुपात, evicted_keys, expired_keys।
  • मेमोरी: प्रयुक्त, विखंडन अनुपात, आरएसएस, आवंटन आँकड़े।
  • प्रतिकृति अंतराल, एओएफ/आरडीबी आवृत्तियों और आकार, कांटा समय।
  • धाराएँ: PEL (लंबित प्रविष्टियाँ सूची), वितरण विलंबता, पुन: गणना।
एसएलओ उदाहरण:
  • Redis P99 ऑपरेशन ≤ 5-10 ms।
  • निष्कासन ≤ 1 %/घंटा (कैश स्पेस)।
  • स्ट्रीम डिलीवरी P99 ≤ 500 мс, रीट्री दर <2%।

10) फिनोप्स और संसाधन योजना

मेमोरी महंगी है: मूल/डीबी के लिए $/जीबी-महीने रैम बनाम बचत अनुरोधों को मापते हैं।

मान संपीड़न> 1-2 KB सक्षम करें (देखें CPU).

LFU कम मात्रा के साथ एक बेहतर हिट दे सकता है।

छवियों/बड़ेब्लॉब के लिए - रेडिस नहीं: सीडीएन + ऑब्जेक्ट भंडारण का उपयोग करें।

11) iGaming/fintech के लिए पैटर्न

11. 1 दर सीमित (लुआ)

विचार: विंडो कुंजी + टीटीएल में 'INCRBY'; लुआ परमाणु रूप से सीमा की जाँच करता है और बढ़ ता है।

lua
-- KEYS[1]=key ARGV[1]=limit ARGV[2]=ttlSec ARGV[3]=inc local cur = redis. call('INCRBY', KEYS[1], ARGV[3])
if cur == tonumber(ARGV[3]) then redis. call('EXPIRE', KEYS[1], ARGV[2]) end if cur > tonumber(ARGV[1]) then return {0, cur} else return {1, cur} end

11. 2 अनुरोध पहचान

TTL 24h, मान - परिणाम/स्थिति के साथ कुंजी 'idemp: {requess _ id}'. ऑपरेशन करने से पहले, हम उपस्थिति की जाँच करते हैं।

11. 3 लीडरबोर्ड

'ZINCRBY लीडरबोर्ड: गेम: {g} स्कोर उपयोगकर्ता: {u}' → 'ZREVRANGE... WITHSCORES '।

क्षेत्र/किरायेदार द्वारा शीर्ष एन के लिए - व्यक्तिगत ZSet या उपसर्ग।

11. 4 पीएसपी वेबहूक कतार

'XADD psp: वेबहूक... '→ उपभोक्ता समूह' XGROUP क्रिएट psp: webhooks g1 $ '।

PEL स्कैनिंग ('XPENDING' → 'XCLAIM') के माध्यम से "अटक" संदेशों की पुनरावृत्ति।

11. 5 आस्थगित भुगतान

ZSet 'payout: कारण' (स्कोर = युग) - कार्यकर्ता समय-समय पर डीडुप्लीकेशन के साथ स्ट्रीम 'पेआउट: एक्सेक' में तैयार वस्तुओं को स्थानांतरित करता है।

11. 6 एंटीफ्राड मीटर

'PFADD' (अद्वितीय) + 'INCR' (तीव्रता) + भू/ASN टैग का संयोजन; मैनुअल सत्यापन के लिए ट्रिगर।

12) स्मृति और प्रदर्शन के साथ काम करना

क्लाइंट कनेक्शन पूल; आरटीटी कम करें (जीवित रखें)।

पाइपलाइनों को कमांड के एक पैक में पसंद करें।

बड़ी कुंजियों ('मेमोरी यूसेज', 'स्कैन') के लिए देखें - वस्तुओं को विभाजित करना बेहतर है।

कम संख्या में क्षेत्रों के साथ हैश कई व्यक्तिगत कुंजियों की तुलना में अधिक किफायती है।

यदि परीक्षण द्वारा लाभ की पुष्टि की जाती है तो io-थ्रेड्स (पढ़ें-भारी) सक्षम करें।

प्रोड में बार-बार 'FLUSHDB/ALL' से बचें; सुरक्षित विलोपन के लिए उपसर्ग और 'UNLINK' के माध्यम से प्रबंधन।

13) बहु-किरायेदार और अलगाव

व्यक्तिगत समूह/उदाहरण या तार्किक डीबी प्रति-किरायेदार (यदि भार छोटा है)।

कुंजी/मेमोरी कोटा, विभाजित एसीएल।

नामस्थान द्वारा कुंजियों और मैट्रिक्स में उपसर्ग।

14) लॉकिंग और स्थिरता

सेट कुंजी वैल एनएक्स पीएक्स = टीटीएल - सरल म्यूटेक्स।

Redlock: सावधानी से उपयोग करें; वितरित महत्वपूर्ण लेनदेन के लिए, "सत्य के स्रोत" (डीबी/बही) और पहचान संचालन पर भरोसा करना बेहतर है।

"लंबे" ताले के बजाय परमाणु संचालन और लुआ पसंद करें।

15) एंटी-पैटर्न

बड़े ब्लॉब/छवियों का भंडारण - रैम और नेटवर्क का अधिभार।

केवल रेडिस में वित्तीय अपरिवर्तनीय (बैलेंस शीट)।

'KEYS' और 'दुनिया को स्कैन करना' प्रोड।

समाप्ति पर कोई टीटीएल/जिटर - डॉगपाइल नहीं।

महत्वपूर्ण कतारों पर 'allkeys-' नीति - दबाव में डेटा हानि।

कोटा और प्राथमिकताओं के बिना एक उदाहरण में कतारें, कैश और सत्रों का मिश्रण।

लुआ स्क्रिप्ट जो क्लस्टर में विभिन्न स्लॉट की चाबियों पर काम करती है।

16) कार्यान्वयन चेकलिस्ट

1. परिभाषित भूमिकाएं: कैश/सत्र, कतारें/धाराएँ, काउंटर/लिमिट - उदाहरणों/समूहों के लिए पोस्ट।

2. कार्य के लिए maxmemory पॉलिसी चुनें; सीमा निर्धारित करें और निष्कासन की निगरानी

3. मुख्य नामकरण, सर्किट संस्करण, टीटीएल मैट्रिक्स + जिटर; शीर्ष कुंजियों के लिए एकल उड़ान।

4. कतारों के लिए - स्थगित - ZSet + स्थानांतरण के लिए धाराएँ (समूह, रिट्रे, DLQ)।

5. एचए: प्रतिकृति + प्रहरी या रेडिस क्लस्टर; क्लाइंट विफलता की जाँच करें।

6. दृढ़ ता: स्क्रिप्ट के तहत आरडीबी/एओएफ; नियमित बैकअप और एक वसूली परीक्षण।

7. सुरक्षा: एसीएल, टीएलएस, निजी नेटवर्क, खतरनाक आदेशों का निषेध।

8. अवलोकन: विलंबता, ऑप्स/सेकंड, मेमोरी, निष्कासन, प्रतिकृति अंतराल, स्ट्रीम पीईएल।

9. FinOps: मेमोरी प्रोफाइल, बड़ी कुंजी, संपीड़न, LFU; बड़े ब्लॉब के लिए रेडिस से बचें।

10. पैटर्न प्रलेखन (दर-सीमा, पहचान, लीडबोर्ड) और लोड परीक्षण।

परिणाम

रेडिस गति का एक "बहुक्रियाशील स्विस चाकू" है: कैश, कतारें, काउंटर, लीडबोर्ड, भू और संभाव्य संरचनाएं। इसकी ताकत डेटा संरचनाओं, टीटीएल/विकलांगता अनुशासन, संचालन की परमाणुता और अच्छी तरह से सोचा-समझा एचए/दृढ़ता और अवलोकन के सही विकल्प में निहित है। रेडिस का उपयोग करें जहां मिलीसेकंड और उच्च आरपीएस महत्वपूर्ण हैं, जबकि महत्वपूर्ण आक्रमणकारियों (धन, लेखांकन) को "सत्य का स्रोत" छोड़ ते हुए - इस तरह मंच तेज और विश्वसनीय दोनों रहेगा।

Contact

हमसे संपर्क करें

किसी भी प्रश्न या सहायता के लिए हमसे संपर्क करें।हम हमेशा मदद के लिए तैयार हैं!

Telegram
@Gamble_GC
इंटीग्रेशन शुरू करें

Email — अनिवार्य है। Telegram या WhatsApp — वैकल्पिक हैं।

आपका नाम वैकल्पिक
Email वैकल्पिक
विषय वैकल्पिक
संदेश वैकल्पिक
Telegram वैकल्पिक
@
अगर आप Telegram डालते हैं — तो हम Email के साथ-साथ वहीं भी जवाब देंगे।
WhatsApp वैकल्पिक
फॉर्मैट: देश कोड और नंबर (उदा. +91XXXXXXXXXX)।

बटन दबाकर आप अपने डेटा की प्रोसेसिंग के लिए सहमति देते हैं।