.NET এবং Redis-এর জন্য একটি ফ্লুয়েন্ট API এবং অবজেক্ট মডেল
Redis লক্ষাংশে ডেভেলপারদের প্রিয় একটি প্রযুক্তি, এর দুটি মুখ্য কারণ হলো গতি এবং সহজতা। Redis একটি সহজ উপায়ে ডেটা স্ট্রাকচারগুলিকে লজিক্যালি সংগঠিত করে যা প্রোগ্রামাররা ইতিমধ্যেই জানেন। এছাড়া, এই স্ট্রাকচারগুলো ব্যবহার করা খুব সহজ এবং অসাধারণভাবে অপ্টিমাইজড। গতি এবং সহজতার এই সর্বোত্তম মিশ্রণই আমরা .NET-এর জন্য একটি নতুন ক্লায়েন্ট লাইব্রেরি, Redis OM রিলিজের মাধ্যমে লক্ষ্য করেছি।
Redis OM .NET কী?
Redis OM হলো Redis-এর জন্য অবজেক্ট ম্যাপিং এবং তার চেয়েও বেশি। Redis OM-এর পেছনে động력은 এই প্রশ্নের উত্তর দিতে: "ডেভেলপাররা সকল Redis কমান্ড না শিখেই কিভাবে Redis-এর চমৎকার সুবিধা নিতে পারেন?" এই প্রথম প্রিভিউ রিলিজে, আমরা এই প্রশ্নের উত্তর খুঁজছি: "আমরা কিভাবে আমাদের ডোমেইন অবজেক্টগুলোকে Redis-এ স্টোর এবং খুঁজে বের করতে পারি?" Redis OM .NET-এর প্রিভিউ রিলিজ হলো একটি অবজেক্ট ম্যাপার, একটি সেকেন্ডারি ইন্ডেক্স বিল্ডার, এবং একটি সরলীকৃত কিন্তু শক্তিশালী কুয়েরি বিল্ডার। এই সব ফিচার আপনাকে আপনার ডোমেইন অবজেক্টগুলোকে Redis-এ স্টোর এবং খুঁজে বের করতে সাহায্য করার লক্ষ্যে তৈরি।
Redis মডিউলস
মডিউল API Redis-এর জন্য একটি গেম চেঞ্জার সাবিত হয়েছে। মডিউলগুলো প্ল্যাটফর্মে অত্যধিক নমনীয়তা যোগ করে থাকায় কিছু অপরিহার্য ফিচার প্রদান করে। বিশেষ করে RedisJSON, সেকেন্ডারি ইন্ডেক্সিং এবং ডকুমেন্ট মডেলিং এর চারপাশে অसीম ফাংশনালিটি আনলক করে। Redis OM মূল Redis-এর সাথে ভালো কাজ করলেও, এটি RedisJSON যোগ হলে সত্যিকারের গতিতে আসে, RedisJSON-এর সম্পূর্ণ সুবিধা নিয়ে অবজেক্ট মডেলিং এবং কুয়েরি করার জন্য একটি সমৃদ্ধ এবং শক্তিশালী API তৈরি করে।
ক্ষমতাগুলো
Redis OM .NET-এর প্রিভিউ ভার্সনে চারটি মূল ক্ষমতা রয়েছে:
- অবজেক্ট মডেলিং
- ইন্ডেক্স তৈরি
- ফ্লুয়েন্ট কুয়েরি
- ফ্লুয়েন্ট অ্যাগ্রিগেশন
এটি কিভাবে কাজ করে
Redis OM-এর সাথে শুরু করার আগে, আপনাকে আপনার প্রজেক্টে প্যাকেজটি ইনস্টল করতে হবে। সেজন্য শুধু এই কমান্ডটি রান করুন:
dotnet add package Redis.OM। Redis OM লাইব্রেরির মধ্যে প্রাথমিক কানেকশন লজিক রয়েছে
RedisConnectionProvider-এ। এই প্রোভাইডার তিনটি ভিন্ন অবজেক্টের অ্যাক্সেস দিয়ে থাকে যেগুলো Redis-এর সাথে যোগাযোগের জন্য ব্যবহার করা যায়:
IRedisConnection
আপনাকেExecute
এবংExecuteAsync
মেথড ব্যবহার করে সরাসরি Redis-এর সাথে ইন্টারফেস করতে দেয়।RedisCollection<T>
হলো অবজেক্টগুলোর একটি জেনেরিক্যালি টাইপড কালেকশন। এই ইন্টারফেস ফ্লুয়েন্ট কুয়েরি API প্রদান করে।RedisAggregationSet<T>
আপনাকে ফ্লুয়েন্ট API ব্যবহার করে Redis-এ অ্যাগ্রিগেশন পাইপলাইন বিল্ড এবং এক্সিকিউট করতে দেয়।
Redis-এর সাথে কানেক্ট করা
ASP.NET Core-এ Redis OM কে Redis-এর সাথে কানেক্ট করতে, আপনাকে
RedisConnectionProvider-এর একটি ইনস্ট্যান্স সিঙ্গলটন হিসেবে ইনজেক্ট করতে হবে। এর জন্য আপনাকে একটি Redis URI ব্যবহার করতে হবে। আপনি যদি .NET 6 ব্যবহার করেন, তাহলে আপনার
program.csফাইলটি খুলে নিচের কোডটি যোগ করুন:
.NET 5-এ, যেটি
Startup.csফাইল ব্যবহার করে, সেখানে আপনি
Startup.ConfigureServices-এ নিচের কোডটি যোগ করতে পারেন:
অবজেক্ট মডেলিং এবং অনুসন্ধান
RedisJSON আপনাকে JSON অবজেক্টগুলোকে Redis-এ নেটিভভাবে স্টোর এবং কুয়েরি করতে দেয়। কিন্তু আপনার JSON কুয়েরি করতে হলে, প্রথমে আপনাকে আপনার ইন্ডেক্সগুলো ডিফাইন করতে হবে। এই প্রক্রিয়াকে সহজ করতে, আমরা Redis OM .NET-এ একটি ডিক্লেরেটিভ মডেল আনার করা হয়েছে যাতে আপনি একটি ডিক্লেরেটিভ ইন্টারফেসের মাধ্যমে এই ইন্ডেক্সগুলো ডিফাইন করতে পারেন। আপনি যদি Redis-এ স্টোর করার জন্য একটি ক্লাস ডিক্লেয়ার করতে চান এবং তার প্রপার্টিগুলো ইন্ডেক্স করতে চান, তবে ক্লাসটিকে
Documentঅ্যাট্রিবিউট দিয়ে ডেকোরেট করুন এবং তারপর পৃথক প্রপার্টিগুলোকে
Indexedবা
Searchableঅ্যাট্রিবিউট দিয়ে সাজান।
Indexedমানে একটি স্ট্যান্ডার্ড ইন্ডেক্স, আর
Searchableশুধু স্ট্রিংয়ের জন্য প্রযোজ্য এবং মানে সেটি ফুল-টেক্সট সার্চের মাধ্যমে কুয়েরি করা যাবে। এরপর, আপনি আপনার নতুন ডেকোরেট করা টাইপটি
IRedisConnection.CreateIndexমেথডে পাস করে Redis-এ ইন্ডেক্স তৈরি করতে পারেন। উদাহরণস্বরূপ, আপনি যদি একটি ইন্ডেক্সসহ
Customerক্লাস ডিক্লেয়ার করতে চান, তবে নিচের মতো কিছু করবেন:
কুয়েরি করা
ইন্ডেক্স তৈরি হলে, আপনি এখন
RedisCollection<T>ব্যবহার করে Redis-এ অবজেক্টগুলো কুয়েরি করতে পারেন। তাই, যদি আপনার কাছে Redis-এ John একটি Customer অবজেক্ট হিসেবে স্টোর করা থাকে, তবে আপনি তাকে এইভাবে কুয়েরি করতে পারেন:
আপনি সহজে রেঞ্জ কুয়েরিও করতে পারেন। উদাহরণস্বরূপ, আসুন সকল Customer খুঁজে বের করি যারা এখনো অবসর গ্রহণের বয়সে পৌঁছেননি:
RedisCollectionএবং RedisJSON-এর সাহায্যে, আপনি LINQ-এ যেমন সাধারণত সমৃদ্ধ এবং জটিল কুয়েরি বানান, ঠিক उसीভাবে বানাতে পারেন, আর Redis OM আপনার জন্য Redis-এর কুয়েরি ল্যাঙ্গুয়েজে অনুবাদ ব্যবস্থা করবে।
অ্যাগ্রিগেশন
কুয়েরির পাশাপাশি, আপনি Redis Aggregations ব্যবহার করে অ্যাগ্রিগেশন পাইপলাইন বানাতে পারেন যা সব ধরনের কাজ করতে পারে। উদাহরণস্বরূপ, ধরে নিন আপনি প্রতিটি কাস্টমারের ৩ বছর পর বয়স খুঁজে বের করতে চান, আপনি একটি সোজা অ্যারিথমেটিক অপারেশন
Applyএক্সপ্রেশনের ভিতরে করে সেটি করতে পারেন, যা Redis-এ একটি সঠিকভাবে ফরম্যাট করা অ্যাগ্রিগেশন পাইপলাইনে অনুবাদ হবে:
আপনি রেকর্ডগুলো গ্রুপ করেও সারামারি পরিসংখ্যান হিসাব করতে পারেন। তাই যদি আপনি কাস্টমারদের তাদের উপনাম অনুযায়ী গ্রুপ করতে চান, তবে আপনি সারামারি পরিসংখ্যান হিসাব করতে পারেন। উদাহরণস্বরূপ, এখানে গড় বয়স কীভাবে হিসাব করবেন তা দেখানো হলো:
শেষ কথা
এটি কেবল .NET-এর জন্য Redis OM-এর ক্ষমতাগুলোর একটি সংক্ষিপ্ত ওভারভিউ। আপনি যদি আরও জানতে চান, তবে টিউটোরিয়াল চেক আউট করুন এবং API ডকুমেন্টেশন দেখুন। আমরা শীঘ্রই Redis.OM-এ আরও ফিচার যোগ করার পরিকল্পনা করছি, এবং সেজন্য আমরা কমিউনিটি ফিডব্যাক চাই। এসে ট্রাই করুন। আপনি যদি কোনো সমস্যা খুঁজে পান বা লাইব্রেরিতে কিছু যোগ করার কথা চিন্তা করেন, তবে GitHub-এ একটি ইস্যু খুলুন। এবং স্বাভাবিকভাবেই, আমরা সবসময় কমিউনিটি কন্ট্রিবিউশনকে ভালোবাসি, তাই PR-গুলো সবসময় স্বাগতযোগ্য :)。