রেডিস-এ সাধারণ স্ট্রিং থেকে শুরু করে রেডিস স্ট্রিমের মতো শক্তিশালী বিমূর্ততা পর্যন্ত বহুমুখী ডেটা স্ট্রাকচার রয়েছে। নেটিভ ডেটা টাইপগুলি আপনাকে অনেক দূর নিয়ে যেতে পারে, তবে কিছু নির্দিষ্ট ব্যবহারের ক্ষেত্রে রয়েছে যার জন্য একটি সমাধানের প্রয়োজন হতে পারে। একটি উদাহরণ হল Redis-এ সেকেন্ডারি ইনডেক্স ব্যবহার করার প্রয়োজনীয়তা যাতে সমৃদ্ধ ক্যোয়ারী ক্ষমতার জন্য কী-ভিত্তিক অনুসন্ধান/লুকআপের বাইরে যেতে হয়। যদিও আপনি কাজটি সম্পন্ন করার জন্য সাজানো সেট, তালিকা ইত্যাদি ব্যবহার করতে পারেন, তবে আপনাকে কিছু ট্রেড-অফের জন্য ফ্যাক্টর করতে হবে।
RediSearch লিখুন! একটি Redis মডিউল হিসাবে উপলব্ধ, RediSearch নমনীয় অনুসন্ধান ক্ষমতা প্রদান করে, একটি প্রথম-শ্রেণীর সেকেন্ডারি ইনডেক্সিং ইঞ্জিনকে ধন্যবাদ৷ এটি পূর্ণ-পাঠ্য অনুসন্ধান, স্বয়ংক্রিয় সমাপ্তি, ভৌগলিক সূচীকরণ এবং আরও অনেক কিছুর মতো শক্তিশালী বৈশিষ্ট্যগুলি অফার করে৷
RediSearch-এর ক্ষমতা প্রদর্শনের জন্য, এই ব্লগ পোস্টটি রেডিসার্চ গো ক্লায়েন্ট ব্যবহার করে নির্মিত একটি Go পরিষেবার সাহায্যে Redis-এর জন্য Azure ক্যাশের সাথে RediSearch ব্যবহার করার একটি বাস্তব উদাহরণ প্রদান করে। এটি আপনাকে অ্যাপ্লিকেশনগুলির একটি সেট দেওয়ার জন্য ডিজাইন করা হয়েছে যা আপনাকে রিয়েল-টাইমে টুইটগুলিকে ইনজেস্ট করতে দেয় এবং রেডিসার্চ ব্যবহার করে নমনীয়ভাবে তাদের জিজ্ঞাসা করতে দেয়৷
বিশেষভাবে, আপনি শিখবেন কিভাবে:
- RediSearch ইনডেক্সের সাথে কাজ করুন
- বিভিন্ন RediSearch ডেটা প্রকার ব্যবহার করুন, যেমন TEXT, NUMERIC, TAG, এবং অন্যান্যগুলি
- কিভাবে RediSearch ক্ষমতা দেখানোর জন্য একটি অ্যাপ্লিকেশন তৈরি করবেন
- কীভাবে কিছু কমান্ড দিয়ে Azure-এ পরিষেবার উপাদানগুলিকে স্থাপন করবেন
- RediSearch ক্যোয়ারী করে টুইট ডেটা বিশ্লেষণ করুন
অ্যাপ্লিকেশন ওভারভিউ
যেমন উল্লেখ করা হয়েছে, উদাহরণ পরিষেবা আপনাকে রিয়েল-টাইমে টুইটগুলি ব্যবহার করতে দেয় এবং সেগুলিকে রেডিসার্চের মাধ্যমে অনুসন্ধানের জন্য উপলব্ধ করে।
এর দুটি উপাদান রয়েছে:
- ভোক্তা/ইনডেক্সার: টুইটার স্ট্রিমিং এপিআই থেকে পড়ে, সূচী তৈরি করে এবং ক্রমাগত টুইট ডেটা যোগ করে (রেডিস হ্যাশে) আসার সাথে সাথে।
- সার্চ সার্ভিস: একটি REST API যা আপনাকে RediSearch ক্যোয়ারী সিনট্যাক্স ব্যবহার করে টুইট অনুসন্ধান করতে দেয়।
এই মুহুর্তে, আমি কীভাবে সমাধানটি পেতে এবং চলমান তা নিয়ে ডুবে যাচ্ছি যাতে আপনি এটিকে কার্যে দেখতে পারেন। যাইহোক, আপনি যদি পৃথক উপাদানগুলি কীভাবে কাজ করে তা বুঝতে আগ্রহী হন, অনুগ্রহ করে নীচের কোড ওয়াক থ্রু বিভাগে এবং এই ব্লগের জন্য গিটহাব রেপো দেখুন:https://github.com/abhirockzz/redisearch-tweet-analysis।
পূর্বশর্ত
- শুরু করতে, আপনার একটি MicrosoftAzure অ্যাকাউন্টের প্রয়োজন হবে:এখানে একটি বিনামূল্যে পান!
- উপরে তালিকাভুক্ত পরিষেবা উপাদানগুলি স্থানীয় ডকার CLI কমান্ড ব্যবহার করে Azure কন্টেইনার ইনস্ট্যান্সে স্থাপন করা হবে। এই ক্ষমতা ডকার এবং Azure-এর মধ্যে ইন্টিগ্রেশন দ্বারা সক্রিয় করা হয়েছে।
- আপনার প্রয়োজন হবে ডকার ডেস্কটপ সংস্করণ 2.3.0.5 বা তার পরে, Windows, macOS-এর জন্য, অথবা Linux-এর জন্য Docker ACI ইন্টিগ্রেশন CLI ইনস্টল করতে হবে। টুইটার স্ট্রিমিং API ব্যবহার করার জন্য, আপনার একটি টুইটার বিকাশকারী অ্যাকাউন্টও প্রয়োজন হবে। আপনার যদি ইতিমধ্যে একটি না থাকে তবে অনুগ্রহ করে এই নির্দেশাবলী অনুসরণ করুন। কর্মে পুনরায় অনুসন্ধান!
Azure-এ রেডিস এন্টারপ্রাইজ টিয়ার ক্যাশে সেট আপ করতে এই দ্রুত-শুরু টিউটোরিয়ালটি ব্যবহার করে শুরু করুন। একবার আপনি সেট আপ শেষ করলে, নিশ্চিত করুন যে আপনার কাছে Redis হোস্টের নাম এবং অ্যাক্সেস কী সহজে আছে:
আমাদের পরিষেবার উভয় উপাদানই ডকার কন্টেইনার হিসাবে উপলব্ধ:টুইট ইন্ডেক্সিং পরিষেবা এবং অনুসন্ধান API পরিষেবা৷ (যদি আপনার নিজের ডকার ইমেজ তৈরি করতে হয়, তাহলে অনুগ্রহ করে গিটহাব রেপোতে উপলব্ধ সংশ্লিষ্ট ডকারফাইলটি ব্যবহার করুন।)
আপনি এখন দেখতে পাবেন যে Azure কন্টেইনার ইনস্ট্যান্সে এগুলি স্থাপন করা কতটা সুবিধাজনক, যা আপনাকে একটি পরিচালিত, সার্ভারহীন Azure পরিবেশে চাহিদা অনুযায়ী ডকার কন্টেইনার চালানোর অনুমতি দেয়৷
Azure-এ স্থাপন করুন
একটি docker-compose.yml ফাইল পৃথক উপাদান সংজ্ঞায়িত করে (টুইট-অনুসন্ধান এবং tweets-indexer ) আপনাকে যা করতে হবে তা হল আপনার Azure Redis উদাহরণের পাশাপাশি আপনার Twitter বিকাশকারী অ্যাকাউন্টের শংসাপত্রের মানগুলি প্রতিস্থাপন করতে এটিকে আপডেট করতে হবে। এখানে সম্পূর্ণ ফাইলটি রয়েছে:
একটি Azure প্রসঙ্গ তৈরি করুন:
GitHub রেপো ক্লোন করুন:
একটি কন্টেইনার গ্রুপের অংশ হিসাবে উভয় পরিষেবা উপাদান স্থাপন করুন:
(মনে রাখবেন যে ডকার কম্পোজ কমান্ডগুলি বর্তমানে একটি ACI প্রসঙ্গে উপলব্ধ ডকার রচনা দিয়ে শুরু হয় . সেটি হল না৷ docker-compose এর মতই একটি হাইফেন সহ। )
আপনি এর অনুরূপ একটি আউটপুট দেখতে পাবেন:
পরিষেবাগুলি শুরু হওয়ার জন্য অপেক্ষা করুন, আপনি Azure পোর্টালটিও পরীক্ষা করতে পারেন। উভয় পরিষেবা চালু হয়ে গেলে, আপনি তাদের নিজ নিজ লগ চেক করতে পারেন:
সবকিছু ঠিক থাকলে, টুইট-ভোক্তা পরিষেবা চালু করা উচিত ছিল। এটি টুইটগুলির একটি প্রবাহ পড়বে এবং সেগুলিকে রেডিস-এ চালিয়ে দেবে৷
৷সত্যের মুহূর্ত!
টুইট ডেটা জিজ্ঞাসা করার সময় এসেছে। এটি করার জন্য, আপনি একটি IP ঠিকানা এবং একটি সম্পূর্ণ যোগ্য ডোমেন নাম (FQDN) সহ Azure কন্টেইনার ইনস্ট্যান্সে REST API অ্যাক্সেস করতে পারেন (কন্টেইনার অ্যাক্সেসে আরও পড়ুন)। IP খুঁজে পেতে, docker ps চালান এবং পোর্টস চেক করুন আউটপুটে বিভাগ (নিচে দেখানো হয়েছে):
আপনি এখন সব ধরণের প্রশ্ন চালাতে পারেন! ডাইভিং করার আগে, এখানে সূচীকৃত বৈশিষ্ট্যগুলির একটি দ্রুত ধারণা রয়েছে যা আপনি আপনার অনুসন্ধানের প্রশ্নগুলিতে ব্যবহার করতে পারেন:
(দ্রষ্টব্য, আমি নীচের উদাহরণগুলিতে কার্ল ব্যবহার করি, তবে VS কোডের জন্য "REST ক্লায়েন্ট"-এর সুপারিশ করব)
অনুসন্ধান পরিষেবা API-এর জন্য ভিত্তি URL সেট করুন:
সহজ শুরু করুন এবং সমস্ত নথি জিজ্ঞাসা করুন (* ব্যবহার করে):
আপনি এর অনুরূপ একটি আউটপুট দেখতে পাবেন:
হেডারগুলি লক্ষ্য করুন পৃষ্ঠা-আকার এবং অনুসন্ধান-হিট :এগুলি হল কাস্টম শিরোনামগুলি অ্যাপ্লিকেশন থেকে পাস করা হচ্ছে, প্রধানত পৃষ্ঠা সংখ্যা এবং সীমা প্রদর্শন করার জন্য৷ আমাদের “আমাকে সমস্ত নথি পান” প্রশ্নের উত্তরে, আমরা Redis-এ 12টি ফলাফল পেয়েছি, কিন্তু JSON বডি 10টি এন্ট্রি ফেরত দিয়েছে। এটি RediSearch Go API-এর ডিফল্ট আচরণের কারণে, যা আপনি বিভিন্ন কোয়েরি প্যারামিটার ব্যবহার করে পরিবর্তন করতে পারেন, যেমন:
অথবা, উদাহরণস্বরূপ, একটি iPhone থেকে পাঠানো টুইট অনুসন্ধান করুন:
আপনি সর্বদা ক্যোয়ারী ফলাফলে সমস্ত বৈশিষ্ট্য নাও চাইতে পারেন। উদাহরণস্বরূপ, এইভাবে ব্যবহারকারীকে (টুইটার স্ক্রিন নাম) এবং টুইট টেক্সট ফিরে পেতে হয়:
ব্যবহারকারীর নামের উপর একটি প্রশ্ন (যেমন jo দিয়ে শুরু):
আপনি ক্যোয়ারীতে বৈশিষ্ট্যগুলির সংমিশ্রণও ব্যবহার করতে পারেন:
কিভাবে আমরা নির্দিষ্ট হ্যাশট্যাগ সহ টুইট খুঁজছি? একাধিক হ্যাশট্যাগ ব্যবহার করা সম্ভব (এর দ্বারা পৃথক করা)?
biden সহ কতগুলি টুইট আছে তা জানতে চাই৷ হ্যাশট্যাগ কি সম্প্রতি তৈরি হয়েছে? একটি পরিসীমা ক্যোয়ারী ব্যবহার করুন:
আপনি যদি টুইটগুলিতে কিছু স্থানাঙ্কের তথ্য পেতে ভাগ্যবান হন তবে আপনি সেগুলি বের করার চেষ্টা করতে পারেন এবং তারপর স্থানাঙ্ক-এ জিজ্ঞাসা করতে পারেন। বৈশিষ্ট্য:
এখানে অল্প কিছু উদাহরণ আছে। নির্দ্বিধায় আরও পরীক্ষা করুন এবং অন্যান্য প্রশ্নগুলি চেষ্টা করুন৷ RediSearch ডকুমেন্টেশনের এই বিভাগটি কাজে আসতে পারে!
গুরুত্বপূর্ণ: আপনি শেষ করার পরে, Azure কন্টেইনার ইনস্ট্যান্সে পরিষেবাগুলি এবং সংশ্লিষ্ট কন্টেইনারগুলি বন্ধ করতে ভুলবেন না:
আপনার তৈরি করা Azure Redis ইন্সট্যান্স মুছে ফেলতে Azure পোর্টাল ব্যবহার করুন।
কোড ওয়াক থ্রু
এই বিভাগটি পৃথক উপাদানগুলির জন্য কোডের একটি উচ্চ-স্তরের ওভারভিউ প্রদান করে। এটি গিটহাব রেপোতে সোর্স কোড নেভিগেট করা সহজ করে তুলবে।
টুইট ভোক্তা/সূচীকারী:
go-twitter লাইব্রেরি টুইটারের সাথে যোগাযোগ করতে ব্যবহার করা হয়েছে।
এটি Twitter স্ট্রিমিং API-এ প্রমাণীকরণ করে:
এবং একটি পৃথক গোরুটিনে টুইটের একটি স্ট্রীম শোনে:
যেতে লক্ষ্য করুন index.AddData(tweetToMap(tweet))- এখানেই ইন্ডেক্সিং কম্পোনেন্টকে আহ্বান করা হয়। এটি Redis এর জন্য Azure ক্যাশের সাথে সংযোগ করে:
এটি পুনরায় তৈরি করার আগে সূচক (এবং বিদ্যমান নথিগুলিও) ড্রপ করে:
সূচী এবং এর সাথে সম্পর্কিত নথিগুলি বাদ দেওয়া হয় যাতে আপনি একটি পরিষ্কার অবস্থা দিয়ে শুরু করতে পারেন, যা পরীক্ষা/ডেমো করা সহজ করে তোলে। আপনি চাইলে এই অংশে মন্তব্য করতে পারেন।
প্রতিটি টুইটের তথ্য একটি HASH এ সংরক্ষণ করা হয় (tweet:
টুইট অনুসন্ধান একটি REST API প্রকাশ করে৷ RediSearch কে জিজ্ঞাসা করতে। সমস্ত বিকল্প (কোয়েরি, ইত্যাদি সহ) ক্যোয়ারী প্যারামিটার আকারে পাস করা হয়। উদাহরণস্বরূপ, https://localhost:8080/search?q=@source:iphone . এটি প্রয়োজনীয় ক্যোয়ারী প্যারামিটার বের করে:
q পরামিতি বাধ্যতামূলক। যাইহোক, আপনি অনুসন্ধানের জন্য নিম্নলিখিত প্যারামিটারগুলিও ব্যবহার করতে পারেন:
- ক্ষেত্র :ফলাফলে আপনি কোন বৈশিষ্ট্যগুলি ফেরত দিতে চান তা নির্দিষ্ট করতে এবং,
- অফসেট_সীমা :আপনি যদি অফসেটটি নির্দিষ্ট করতে চান যেখান থেকে আপনি অনুসন্ধান করতে চান এবং ফলাফলে আপনি যে নথিগুলি অন্তর্ভুক্ত করতে চান তার সংখ্যা (ডিফল্টরূপে, অফসেট 0 এবং সীমা 10 - রেডিসার্চ গো ক্লায়েন্ট অনুসারে)।
যেমন:
অবশেষে, ফলাফলগুলি পুনরাবৃত্তি করা হয় এবং JSON (ডকুমেন্টের অ্যারে):
হিসাবে ফিরে আসেএই বিভাগের জন্য এতটুকুই!
Redis এর জন্য Azure ক্যাশে রেডিস এন্টারপ্রাইজ টিয়ার
Redis এন্টারপ্রাইজ Azure-এ একটি নেটিভ পরিষেবা হিসাবে Redis-এর Azure Cache-এর জন্য দুটি নতুন স্তরের আকারে উপলব্ধ যা Microsoft এবং Redis দ্বারা পরিচালিত এবং সমর্থিত। এই পরিষেবাটি বিকাশকারীদের রেডিস এন্টারপ্রাইজ বৈশিষ্ট্যগুলির একটি সমৃদ্ধ সেটে অ্যাক্সেস দেয়, যার মধ্যে রেডিসার্চের মতো মডিউল রয়েছে৷ আরও তথ্যের জন্য, এই সংস্থানগুলি দেখুন:
- Redis, এন্টারপ্রাইজ টিয়ারের জন্য Azure ক্যাশে এখন সাধারণভাবে উপলব্ধ
- ক্লাউডে Redis Enterprise বাড়াতে Microsoft-এর সাথে আমাদের অংশীদারিত্ব আরও গভীর করা
- Microsoft এবং Redis ডেভেলপারদের Redis ক্ষমতার জন্য নতুন Azure ক্যাশে দিতে সহযোগিতা করে
- Redis এর জন্য Azure ক্যাশে Redis Enterprise বৈশিষ্ট্যগুলি
উপসংহার
এই এন্ড-টু-এন্ড অ্যাপ্লিকেশনটি দেখায় কিভাবে সূচীগুলির সাথে কাজ করতে হয়, নথি (টুইট তথ্য) তৈরি করতে রিয়েল-টাইম ডেটা ইনজেস্ট করে যা রেডিসার্চ ইঞ্জিন দ্বারা ইন্ডেক্স করা হয় এবং তারপর সেই টুইটগুলিতে অন্তর্দৃষ্টি বের করতে বহুমুখী ক্যোয়ারী সিনট্যাক্স ব্যবহার করে৷
আপনি যখন Redis ডকুমেন্টেশনে একটি বিষয় অনুসন্ধান করেন তখন পর্দার আড়ালে কী ঘটে তা বুঝতে চান? কিভাবে Redis সাইট RediSearch-এর সাথে পূর্ণ-পাঠ্য অনুসন্ধানকে অন্তর্ভুক্ত করেছে তা জানতে এই ব্লগ পোস্টটি দেখুন! অথবা, সম্ভবত আপনি একটি সার্ভারহীন অ্যাপ্লিকেশনে RediSearch কিভাবে ব্যবহার করবেন তা অন্বেষণ করতে আগ্রহী?
আপনি যদি এখনও শুরু করে থাকেন, তাহলে RediSearch দ্রুত শুরু পৃষ্ঠাতে যান৷
৷আপনি যদি Redis এর জন্য Azure ক্যাশে এন্টারপ্রাইজ ক্ষমতা সম্পর্কে আরও জানতে চান, তাহলে আপনি নিম্নলিখিত সংস্থানগুলি পরীক্ষা করে দেখতে পারেন:
- মাল্টি জোন রিডানডেন্সি এবং কীভাবে এটি সেট আপ করবেন
- নেটওয়ার্ক আইসোলেশনের জন্য ব্যক্তিগত লিঙ্ক সমর্থন
- সঠিক ক্যাশিং স্তর নির্বাচন করা হচ্ছে
- এন্টারপ্রাইজ স্তরগুলির জন্য উচ্চ প্রাপ্যতা