Redis Streams হল একটি ডেটা স্ট্রাকচার যা রেডিস 5.0 তে নতুন করে যোগ করা হয়েছে, এবং এটি মূলত log-like ডেটা সঞ্চয়ের জন্য ব্যবহৃত হয়। Redis Streams ডেটার স্ট্রিমিং এবং রিয়েল-টাইম ডেটা প্রসেসিংয়ের জন্য আদর্শ। এটি একাধিক প্রযোজ্য ক্ষেত্রে যেমন ইভেন্ট সোরসিং, মেসেজিং সিস্টেম, এবং কিউ ম্যানেজমেন্টে ব্যবহৃত হতে পারে।
Redis Streams মূলত একটি log-based data structure, যেখানে ডেটা টাইমস্ট্যাম্প এবং ইউনিক আইডি দিয়ে সংরক্ষিত থাকে, এবং এই ডেটা ক্রমাগতভাবে আপডেট ও অ্যাক্সেস করা যেতে পারে। এটি Pub/Sub মডেলের তুলনায় একটু বেশি উন্নত, কারণ এখানে একাধিক Consumers এবং Consumer Groups হতে পারে, যারা একাধিক Messages বা Events প্রক্রিয়া করতে পারে।
Redis Streams-এর মূল বৈশিষ্ট্য
- Log-Based Storage: Redis Streams ডেটাকে একটি লজ হিসেবে সংরক্ষণ করে, যা ডেটার একটি ক্রম তৈরি করে (যেমন টাইমস্ট্যাম্প + ইউনিক আইডি)। এটি ইভেন্ট লগিং, ট্রানজেকশন লগিং এবং এমনকি মেসেজ ট্র্যাকিংয়ের জন্য উপযুক্ত।
- Consumer Groups: Redis Streams এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হল Consumer Groups। একাধিক কনজিউমার (বা কনজিউমার গ্রুপ) একই স্ট্রিম থেকে ডেটা কনজিউম করতে পারে, এবং Redis তাদের মধ্যে কাজ ভাগ করে দেয়, যাতে প্রতিটি কনজিউমার স্ট্রিম থেকে নির্দিষ্ট মেসেজগুলো প্রক্রিয়া করতে পারে।
- Message Acknowledgement: Redis Streams মেসেজ প্রসেস করার পর acknowledgment সিস্টেমের মাধ্যমে নিশ্চিত করে যে মেসেজটি সফলভাবে প্রক্রিয়া হয়েছে।
- Blocking and Non-Blocking Reads: Redis Streams ব্লকিং বা নন-ব্লকিং রিড অপারেশন সাপোর্ট করে, যা প্রোগ্রামারদের রিয়েল-টাইম ডেটা প্রসেসিং করার সুবিধা দেয়।
- Persistent: Redis Streams পার্সিস্টেন্ট ডেটা স্টোরেজ হিসেবে কাজ করে, কারণ এটি ডেটাকে AOF (Append-Only File) বা RDB (Redis Database) ব্যাকআপ সিস্টেমের মাধ্যমে সেভ করে রাখে।
Redis Streams-এর মূল কমান্ডগুলো
Redis Streams ব্যবহার করার জন্য কিছু গুরুত্বপূর্ণ কমান্ড রয়েছে। এখানে XADD, XREAD, XGROUP এবং XACK কমান্ডগুলোর ব্যবহার আলোচনা করা হচ্ছে।
1. XADD: নতুন মেসেজ স্ট্রিমে যোগ করা
XADD কমান্ডের মাধ্যমে একটি নতুন মেসেজ স্ট্রিমে যোগ করা হয়। এটি স্ট্রিমের শেষের দিকে নতুন মেসেজ যুক্ত করে।
XADD mystream * message "Hello, Redis Streams!"
mystream: স্ট্রিমের নাম।*: টাইমস্ট্যাম্প এবং ইউনিক আইডি যুক্ত হবে, যা স্বয়ংক্রিয়ভাবে তৈরি হয়।message: মেসেজ বা ডেটা।
এটি একটি নতুন মেসেজ স্ট্রিমে যোগ করবে এবং স্বয়ংক্রিয়ভাবে একটি স্ট্রিম আইডি তৈরি হবে।
2. XREAD: স্ট্রিম থেকে মেসেজ রিড করা
XREAD কমান্ড ব্যবহার করে স্ট্রিম থেকে মেসেজ পড়া হয়। এটি ব্লকিং বা নন-ব্লকিং রিড অপারেশন সাপোর্ট করে।
XREAD COUNT 2 BLOCK 0 STREAMS mystream $
COUNT 2: সর্বোচ্চ ২টি মেসেজ পড়বে।BLOCK 0: ব্লকিং রিড (0 মানে ইনফিনিট ব্লক করবে যতক্ষণ না নতুন মেসেজ আসে)।STREAMS mystream $:mystreamস্ট্রিম থেকে রিড করা হবে এবং$নির্দেশনা দিয়ে স্ট্রিমের সর্বশেষ মেসেজ থেকে রিড শুরু হবে।
3. XGROUP: Consumer Group তৈরি এবং পরিচালনা
Redis Streams-এ Consumer Group তৈরি করা হয়, যেখানে একাধিক কনজিউমার একই স্ট্রিম থেকে মেসেজ গ্রহণ করতে পারে। XGROUP কমান্ডের মাধ্যমে একটি কনজিউমার গ্রুপ তৈরি করা হয়।
XGROUP CREATE mystream mygroup $ MKSTREAM
mystream: স্ট্রিমের নাম।mygroup: কনজিউমার গ্রুপের নাম।$: কনজিউমার গ্রুপ নতুন মেসেজগুলি পড়বে।
4. XACK: মেসেজ অ্যাকনলেজ করা
একটি মেসেজ সফলভাবে কনজিউম করার পর, কনজিউমারদের acknowledge করা প্রয়োজন। এটি করার জন্য XACK কমান্ড ব্যবহার করা হয়।
XACK mystream mygroup 1526569495631-0
mystream: স্ট্রিমের নাম।mygroup: কনজিউমার গ্রুপের নাম।1526569495631-0: স্ট্রিমের মেসেজ আইডি (যাXADDকমান্ডের মাধ্যমে সৃষ্টি হয়েছে)।
5. XTRIM: স্ট্রিম ট্রিম করা
XTRIM কমান্ড ব্যবহার করে স্ট্রিমের সাইজ সীমাবদ্ধ করা যায়। এটি স্ট্রিমের পুরনো মেসেজগুলো মুছে ফেলে।
XTRIM mystream MAXLEN 1000
MAXLEN 1000: স্ট্রিমে সর্বোচ্চ 1000 মেসেজ থাকতে দেবে, পুরনো মেসেজগুলো মুছে ফেলা হবে।
Redis Streams-এর ব্যবহার ক্ষেত্র
- Real-Time Data Processing: Redis Streams ইভেন্ট লগিং এবং রিয়েল-টাইম ডেটা প্রসেসিংয়ের জন্য উপযুক্ত। যেমন, ওয়েবসাইট ভিজিটর ট্র্যাকিং, চ্যাট সিস্টেম, লোগিং ইত্যাদি।
- Event Sourcing: অ্যাপ্লিকেশনের স্টেট পরিবর্তনের জন্য ইভেন্ট স্ট্রিম তৈরি করা হয়, যা পরবর্তীতে পুনরুদ্ধার বা প্রক্রিয়া করা যায়।
- Message Queuing: Redis Streams কে একটি মেসেজ কিউ হিসেবে ব্যবহার করে বিভিন্ন মেসেজ কনজিউমারদের মধ্যে ডেটা প্রসেস করা হয়।
- Analytics: রিয়েল-টাইম ডেটা অ্যাকিউমুলেট এবং প্রোসেস করার জন্য Redis Streams ব্যবহার করা যায়, যেমন, লগ ফাইল প্রসেসিং, ইউজার বিহেভিয়ার ট্র্যাকিং, ইত্যাদি।
সারাংশ
Redis Streams একটি শক্তিশালী ডেটা স্ট্রাকচার যা রিয়েল-টাইম ডেটা প্রসেসিং এবং মেসেজিং সিস্টেমে ব্যবহৃত হয়। এটি log-based স্টোরেজ পদ্ধতি ব্যবহার করে যেখানে প্রতিটি মেসেজ একটি টাইমস্ট্যাম্প এবং ইউনিক আইডি দ্বারা চিহ্নিত হয়। Redis Streams-এ Consumer Groups ব্যবহার করে একাধিক কনজিউমার একই ডেটা স্ট্রিম থেকে মেসেজ গ্রহণ করতে পারে। এটি Event Sourcing, Message Queuing, এবং Real-Time Data Processing এর মতো ক্ষেত্রে ব্যবহৃত হতে পারে।
Read more