पृष्ठभूमि
कभी-कभी, Redis का उपयोग करने की प्रक्रिया में, हम समस्याओं का सामना कर सकते हैं, जैसे बहुत अधिक मेमोरी या पूर्ण बैंडविड्थ। जब हम इन समस्याओं का सामना करते हैं, तो हमें Redis की मेमोरी का विश्लेषण करने की आवश्यकता होती है।
Redis के लिए दो प्रकार के मेमोरी विश्लेषण हैं: ऑनलाइन विश्लेषण और ऑफलाइन विश्लेषण। ऑनलाइन विश्लेषण सीधे Redis सर्वर से जुड़ता है और उसकी मेमोरी का विश्लेषण करता है, जिससे Redis सर्वर पर लोड बढ़ जाएगा। यह Redis सर्वर की स्थिरता को प्रभावित कर सकता है। ऑफलाइन विश्लेषण RDB बैकअप फाइलों पर आधारित है, जो Redis सर्वर की स्थिरता को प्रभावित नहीं करेगा। यह तब अनुशंसित है जब उपयोग की गई मेमोरी 2GB से अधिक हो।
हम Redis की मेमोरी का ऑफलाइन विश्लेषण कैसे कर सकते हैं? ओपन सोर्स दुनिया में दो प्रसिद्ध उपकरण हैं जो हमारी मदद कर सकते हैं: redis-rdb-tools और rdr।
redis-rdb-tools Python द्वारा कार्यान्वित है, और rdr Golang द्वारा कार्यान्वित है। यदि डेवलपर्स इन दो भाषाओं से परिचित नहीं हैं और उन पर आधारित कुछ कार्यों का विस्तार करना चाहते हैं, तो प्रक्रिया अधिक कठिन हो सकती है। अगला, मैं C# द्वारा कार्यान्वित एक और ऑफलाइन विश्लेषण उपकरण पेश करूंगा जो C# डेवलपर्स के लिए विस्तार करना आसान होगा।
rdb-tools
rdb-tools एक उपकरण है जो Redis RDB फाइलों को पार्स/विश्लेषण करता है जिसे C# द्वारा कार्यान्वित किया गया है।
इसमें दो भाग होते हैं:
- एक पार्सर लाइब्रेरी, जिसे आप स्वयं अनुकूलित कर सकते हैं।
- एक विश्लेषण CLI उपकरण, जिसका उपयोग आप कमांड लाइन के लिए कुछ बुनियादी उपयोगों का विश्लेषण करने के लिए कर सकते हैं।
पार्सर लाइब्रेरी net6.0 पर आधारित है ताकि हम इसे आसानी से विस्तारित कर सकें।
CLI उपकरण भी net6.0 पर आधारित है, जिसे कमांड-लाइन-API का उपयोग करके बनाया गया है और इसे रनटाइम निर्भरता के बिना बाइनरी फाइलों में पैक किया जा सकता है।
CLI उपकरण का उपयोग
rdb-cli इंस्टॉल करने के दो तरीके हैं।
- यदि आपने .NET 6.0 SDK इंस्टॉल नहीं किया है, तो अपने OS संस्करण के आधार पर नवीनतम स्थिर रिलीज़ से उपकरण डाउनलोड करें।
- यदि आपने .NET 6.0 SDK इंस्टॉल किया है, तो इंस्टॉल करने के लिए
dotnet tool install --global rdb-cliका उपयोग कर सकते हैं।
यहां हम पहला तरीका दिखाएंगे।
डाउनलोड और निकालने के बाद, आपको rdb-cli नामक एक निष्पादन योग्य फाइल मिलेगी।
मदद की जानकारी प्राप्त करने के लिए ./rdb-cli -h इनपुट करें।

जैसा कि आप देख सकते हैं, दो कमांड हैं जिनका हम उपयोग कर सकते हैं। सबसे महत्वपूर्ण कमांड memory है।

मदद की जानकारी से, आप देख सकते हैं कि आपको RDB फाइल और कुछ विशिष्ट विकल्प निर्दिष्ट करने की आवश्यकता है।
एक सरल और सामान्य उदाहरण इस प्रकार है:
./rdb-cli memory /tmp/test/demo.rdb -ot html
यह कमांड RDB फाइल का विश्लेषण करेगा, और विश्लेषण परिणाम HTML के रूप में प्रस्तुत किए जाएंगे।
नीचे दिए गए स्क्रीनशॉट में निष्पादन कमांड का आउटपुट दिखाया गया है। यह स्पष्ट है कि 2.1GB RDB फाइल का विश्लेषण करने में केवल 32 सेकंड लगते हैं, जो अपेक्षाकृत तेज गति है।

विस्तृत HTML रिपोर्ट आउटपुट /tmp/test/res.html में
आइए इसे देखें।




HTML परिणाम में तीन भाग होते हैं:
पहला भाग बुनियादी जानकारी है, जिसमें RDB संस्करण जानकारी, Redis संस्करण जानकारी, कुल मेमोरी और कुंजियों की कुल संख्या शामिल है।
दूसरा भाग कुछ हिस्टोग्राम हैं, मुख्य रूप से विभिन्न डेटा प्रकारों की मेमोरी और मात्रा वितरण, साथ ही समाप्ति समय की मेमोरी और मात्रा वितरण।
तीसरा भाग कुछ टेबल हैं, जिनमें शीर्ष कुंजी प्रीफिक्स सूची, शीर्ष बड़ी कुंजी सूची, शीर्ष स्ट्रीम सूची, और फ़ंक्शन सूची (Redis 7.0) शामिल हैं।
इसके अतिरिक्त, यदि आप सभी जानकारी का विश्लेषण नहीं करना चाहते हैं और कुछ शर्तों को फ़िल्टर करना चाहते हैं, तो आप विभिन्न पैरामीटर विकल्प निर्दिष्ट कर सकते हैं।
दो उदाहरण:
1. जब आप केवल DB 9 और DB 10 का विश्लेषण करना चाहते हैं:
./rdb-cli memory /tmp/test/demo.rdb -ot html --db 9 --db 10
2. जब आप केवल हैश और स्ट्रिंग प्रकारों का विश्लेषण करना चाहते हैं:
./rdb-cli memory /tmp/test/demo.rdb -ot html --type string --type hash
संदर्भ के लिए 2~8GB RDB फाइलों के विश्लेषण को पूरक किया गया है।

ऊपर वर्णित CLI उपकरण आपकी आवश्यकताओं के लिए पूरी तरह उपयुक्त नहीं हो सकते हैं। इस समय, हम पार्सिंग क्लास लाइब्रेरी के आधार पर अपनी अनुकूलन आवश्यकताओं को अनुकूलित कर सकते हैं।
पार्सर लाइब्रेरी का उपयोग
सबसे पहले NuGet से RDBParse पैकेज इंस्टॉल करें।
dotnet add package RDBParse
अगला, आपको IReaderCallback इंटरफेस को लागू करने के लिए एक कार्यान्वयन क्लास जोड़ने की आवश्यकता है।
फिर, BinaryReaderRDBParser क्लास का एक नया उदाहरण बनाएं।
अंत में, BinaryReaderRDBParser के उदाहरण की Parse मेथड को कॉल करें।
नीचे उदाहरण के लिए कोड दिया गया है।
public class MyReaderCallBack : IReaderCallback
{
}
var path = "/yourpath/your.rdb"
var cb = new MyReaderCallBack();
var parser = new RDBParser.BinaryReaderRDBParser(cb);
parser.Parse(path);
सारांश
यह लेख C# पर आधारित एक RDB विश्लेषण उपकरण पेश करता है और इसके बुनियादी उपयोग और इसे कैसे अनुकूलित करें, इसे समझाता है।
मुझे आशा है कि यह आपकी मदद करेगा!
संदर्भ
- rdb-tools GitHub पेज
- Redis का rdb.c
- rdr GitHub पेज
- redis-rdb-tools GitHub पेज