রেডিস জিনিসটা কি? রেডিসন নাম কি রেডিস থেকে এসেছে? নাকি যে লেডিস রেড কালার পছন্দ করেন তাকে রেডিস বলা হয়? নাকি অন্যকিছু
চিন্তার বিষয়
ডেভলপার যেহেতু পোস্ট দিছে সেহেতু এটা টেকনিক্যাল ব্যপার সেপার নিশ্চয়ই । দেখা যাক রেডিস জিনিসটা আসলে কি ।
কৈ মাছের প্রাণ রেডিস টেক ইন্ডাস্ট্রিতে ব্যবহৃত হচ্ছে বহু বছর ধরে । কিন্তু ইলিশের মতোই অনেক কাটাযুক্ত কিন্তু বড্ড স্বাদ লাগে খেতে একে ৷ স্কিলের বাজারে তাই এর দর-দাম অনেক
পদ্মা নদী ঘুরা হউক কিন্তু রেডিস ও কিছুটা শেখা হউক। কেমন?
Redis এর পুর্নরুপ REmote DIstributed Server.
এটি একটি ওপেন সোর্স In memory key-value data store. একটি ইতালিয়ান স্টার্টআপ রিয়েল টাইম ওয়েব লগ এনালাইজার বানাতে স্কেলেবিলিটি ইম্প্রভমেন্টের জন্য এটি ডেভলপ করেছিলো।
মুল ডেভলপার Sanfilippo কে VMWare পরবর্তীতে হায়ার করেছিলো ।
ইন মেমরি স্টোরেজ হলেও একে ডিস্কে পারসিস্ট করা যায়। ডিফল্ট periodically ২ সেকেন্ড পর পর ডিস্কে স্টোর করা হয় কিংবা প্রত্যেক কমান্ড রান হলেই ব্যাকগ্রাউন্ডে ডিস্কে স্টোর করা যায়। প্রয়োজনে পারসিস্ট অপশন ডিজেবল করা যায়। আমরা জানি, মেইন মেমরি সেকেন্ডারি মেমরির চেয়ে ফাস্টার রেসপন্স করে ৷
অতএব, রেডিস যেহেতু ডাটা আগে মেমরিতে স্টোর করে অতএব সে উসাইন বোল্টের মতোই গতি দানব ( গদা ) ৷
এজন্য রেডিস ক্যাশিং এর জন্য বেশি ব্যবহৃত হয় ।
রেডিসে অনেক ধরনের ডাটা স্ট্রাকচার রয়েছে, যেমন: String, Hash, Set, List,Sorted Set, Stream, GeoHash, HyperLogLog . নাম দেখেই বুঝা যাচ্ছে এদের কি কাজ ।
না বুঝলেও প্যারা নাই। পরবর্তী ব্লগে একেক ডাটা স্ট্রাকচার কেন এবং কীভাবে ব্যবহার করা যায় সে নিয়ে বিস্তারিত লেখার চেষ্টা করবো
একটু চিন্তা করেন, ডিস্কে স্টোর করা যায় এবং এরকম পাওয়ারফুল ডাটা স্ট্রাকচার সাপোর্ট করে সেহেতু একে কি ডাটাবেজ হিসেবে ব্যবহার করতে পারা উচিত নয় কি? হ্যা, Redis Enterprise ইউজ করলে আপনি রেডিস কে একদম MongoDB, MySQL এর মতোই প্রাইমারি ডাটাবেইজ হিসেবে ব্যবহার করতে পারবেন ৷ কোন ধরনের এপ্লিকেশনে রেডিসকে প্রাইমারি ডাটাবেইজ হিসেবে ব্যবহার করা উচিত সেটা বিশ্লেষণযোগ্য এবং এপ্লিকেশন টাইপ, ফিচার, ইউজকেস অনেক কিছুই ম্যাটার করে ।
এতোটুকু জানা প্রয়োজন, Redis এর অনেক ধরনের মডিউল রয়েছে যেমন:
১. RedisJSON: রেডিস ডিরেক্টলি json document store and query করতে সক্ষম । এ মডিউল ইউজ করলে String data structure ইউজ করতে একটা ফিল্ড আপডেটের জন্য আগের কি রিমুভ/ফরগেট করা নতুন key আপডেট করা, serialize, deserializing মতো কাজ আর করতে হয় না । ডিরেক্টলি json ডাটা রিড/রাইট করা যায়। সহজেই বিভিন্ন মডেলের ডাটা ইউজ করা যায়
২. RedisSearch: ইন্ডেক্সিং, ফুলটেক্সট সার্চ,এগ্রিগেশন কুয়েরী করতে এ মডিউল ব্যবহার করা যায় ৷ ElasticSearch, MongoDB Atlas Search এর সাপেক্ষে তুলনা না করি কিন্তু এপ্লিকেশনে ছোট একটা পার্টে রিয়েল টাইম সার্চিং প্রয়োজন হলে এর ভালোই ইউজকেস আছে বলা যায়। রিয়েল টাইম লোকেশন সার্চ ও করা সম্ভব
৩. RedisGraph: গরীবের গ্রাফ ডাটাবেজ
৪. RedisTimeSeries: IoT ডিভাইসে টাইম সিরিজ ডাটা নিয়ে কাজ করা প্রয়োজন হয় প্রায় ই, সো চেক ইট আউট ইফ ইউ নিড ৷
৫. RedisBloom: probabilistic data structures নিয়ে কাজ করতে এ মডিউল ইউজ করা হয় ৷ Bloom filter and Cuckoo filter, Count-min sketch, TopK ইত্যাদি নিয়ে কাজ করা যায়৷ — — — -
৬. Redis Cell: rate limiting এর জন্য ব্যবহৃত হয়।
৭. RedLock: Distributed Lock system
. ৮. Lqrm: Laravel Queue Redis Module
৯. Redis-protobuf: Redis module for reading and writing protobuf messages
১০. Session Gate: a module for session management by Redis.
১১. RedisAI:
১২. Neural-redis: Neural networks module for Redis
বুঝাই যাচ্ছে Redis key-value storage ই নয় শুধু এর ইউজকেস অনেক ৷ এখন রেডিস অনেক ধরনের ডাটা মডেলিং সাপোর্ট করে ।
অতএব এর ডাটা স্ট্রাকচার নিয়ে এক বা একাধিক ব্লগ এবং শুধুমাত্র ইউজকেস নিয়ে একটি ব্লগ লিখা হবে এ রেডিস কথন সিরিজ এ ৷ ভুল ত্রুটি ধরিয়ে দিন, নলেজ শেয়ারিং এ অংশ নিন। সাথে থাকার জন্য, ধন্যবাদ ।