পটভূমি
কখনও কখনও, Redis ব্যবহার করার প্রক্রিয়ায়, আমরা সমস্যার সম্মুখীন হতে পারি, যেমন অত্যধিক মেমরি বা সম্পূর্ণ ব্যান্ডউইথ। যখন আমরা এই সমস্যার সম্মুখীন হই, তখন আমাদের রেডিসের স্মৃতি বিশ্লেষণ করতে হবে।
Redis-এর জন্য দুই ধরনের মেমরি বিশ্লেষণ রয়েছে:অনলাইন বিশ্লেষণ এবং অফলাইন বিশ্লেষণ। অনলাইন বিশ্লেষণ সরাসরি Redis সার্ভারের সাথে সংযোগ করে এবং এর মেমরি বিশ্লেষণ করে, যা Redis সার্ভারে লোড বাড়াবে। এটি Redis সার্ভারের স্থায়িত্বকে প্রভাবিত করতে পারে। অফলাইন বিশ্লেষণ RDB ব্যাকআপ ফাইলের উপর ভিত্তি করে, যা Redis সার্ভারের স্থায়িত্বকে প্রভাবিত করবে না। যখন ব্যবহৃত মেমরি 2GB-এর বেশি হয় তখন এটি সুপারিশ করা হয়।
কিভাবে আমরা রেডিসের মেমরি অফলাইনে বিশ্লেষণ করতে পারি? ওপেন সোর্স জগতে দুটি সুপরিচিত টুল রয়েছে যা আমাদের সাহায্য করতে পারে: redis-rdb-tools এবং rdr।
redis-rdb-tools Python দ্বারা প্রয়োগ করা হয়, এবং rdr গোলং দ্বারা প্রয়োগ করা হয়। যদি বিকাশকারীরা এই দুটি ভাষার সাথে পরিচিত না হন এবং তাদের উপর ভিত্তি করে কিছু ফাংশন প্রসারিত করতে চান তবে প্রক্রিয়াটি আরও কঠিন হতে পারে। এর পরে, আমি c# দ্বারা বাস্তবায়িত আরেকটি অফলাইন বিশ্লেষণ টুল প্রবর্তন করব যা c# বিকাশকারীদের জন্য প্রসারিত করা সহজ হবে।
rdb-tools
rdb-tools হল redis rdb ফাইল পার্স/বিশ্লেষণ করার একটি টুল যা c# দ্বারা প্রয়োগ করা হয়।
এটি দুটি অংশ নিয়ে গঠিত:
- একটি পার্সার লাইব্রেরি, যা আপনি নিজের দ্বারা কাস্টমাইজ করতে পারেন।
- একটি anslysis cli টুল, যা আপনি কমান্ড লাইনের জন্য কিছু মৌলিক ব্যবহার বিশ্লেষণ করতে পারেন।
পার্সার লাইব্রেরিটি net6.0 এর উপর ভিত্তি করে যাতে আমরা সহজেই এটিকে প্রসারিত করতে পারি।
cli টুলটিও net6.0 এর উপর ভিত্তি করে , যা কমান্ড-লাইন-এপিআই ব্যবহার করে তৈরি করা হয়েছে এবং রানটাইম নির্ভরতা ছাড়াই বাইনারি ফাইলগুলিতে প্যাকেজ করা যেতে পারে।
CLI টুলের ব্যবহার
rdb-cli ইনস্টল করার দুটি উপায় আছে .
- যদি আপনি .NET 6.0 SDK ইনস্টল না করেন, তাহলে আপনার OS সংস্করণের উপর ভিত্তি করে সর্বশেষ স্থিতিশীল রিলিজ থেকে টুলটি ডাউনলোড করুন।
- যদি আপনি .NET 6.0 SDK ইনস্টল করে থাকেন, তাহলে আপনি
dotnet tool install --global rdb-cliব্যবহার করতে পারেন ইনস্টল করতে।
এখানে আমরা প্রথম পথ দেখাব।
ডাউনলোড এবং এক্সট্রাক্ট করার পরে, আপনি rdb-cli নামে একটি এক্সিকিউটেবল ফাইল পাবেন .
ইনপুট ./rdb-cli -h সাহায্যের তথ্য পেতে।

আপনি দেখতে পাচ্ছেন, দুটি কমান্ড আছে যা আমরা ব্যবহার করতে পারি। সবচেয়ে গুরুত্বপূর্ণ কমান্ড হল মেমরি .

সাহায্য তথ্য থেকে, আপনি দেখতে পারেন যে আপনাকে RDB ফাইল এবং কিছু নির্দিষ্ট বিকল্প উল্লেখ করতে হবে।
একটি সহজ এবং সাধারণ উদাহরণ নিম্নরূপ:
./rdb-cli memory /tmp/test/demo.rdb -ot html এই কমান্ডটি rdb ফাইলকে বিশ্লেষণ করবে, এবং বিশ্লেষণের ফলাফল HTML আকারে উপস্থাপন করা হবে।
নিচের স্ক্রিনশটটি এক্সিকিউশন কমান্ডের আউটপুট দেখায়। এটা স্পষ্ট যে এটি একটি 2.1GB RDB ফাইল বিশ্লেষণ করতে মাত্র 32 সেকেন্ড সময় নেয়, যা তুলনামূলকভাবে দ্রুত গতির।

/tmp/test/res.html-এ বিস্তারিত 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 টুলগুলি আপনার প্রয়োজনের জন্য সম্পূর্ণ উপযুক্ত নাও হতে পারে। এই সময়ে, আমরা পার্সিং ক্লাস লাইব্রেরির উপর ভিত্তি করে আমাদের কাস্টমাইজেশন প্রয়োজনীয়তা কাস্টমাইজ করতে পারি।
পার্সার লাইব্রেরির ব্যবহার
RDBParse ইনস্টল করুন প্রথমে নুগেট থেকে প্যাকেজ।
dotnet add package RDBParse
এরপর, IReaderCallback বাস্তবায়ন করতে আপনাকে একটি বাস্তবায়ন ক্লাস যোগ করতে হবে ইন্টারফেস।
তারপর, BinaryReaderRDBParser এর একটি নতুন উদাহরণ তৈরি করুন ক্লাস।
অবশেষে, Parse কল করুন BinaryReaderRDBParser এর পদ্ধতি এর উদাহরণ।
উদাহরণস্বরূপ এই নীচের কোড অনুসরণ করুন.
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 পৃষ্ঠা