রেডিস ট্রানজ্যাকশন (Transactions) হল একটি প্রক্রিয়া যার মাধ্যমে একাধিক কমান্ড একসাথে গ্রুপ করা যায়, যাতে এগুলি একসাথে অ্যাটমিকভাবে (atomic) সম্পন্ন হয়। রেডিসে ট্রানজ্যাকশনগুলি কমান্ডের একটি সিরিজ থাকে, যা সফলভাবে সম্পন্ন হলে তাদের সবকটিকে একসাথে কার্যকর করা হয়, অন্যথায় কোনো একটিরও পরিবর্তন কার্যকর করা হয় না।
রেডিসে ট্রানজ্যাকশন ব্যবহারের মাধ্যমে আপনি নিশ্চিত করতে পারেন যে, যদি কোনো কমান্ড ব্যর্থ হয়, তাহলে পুরো ট্রানজ্যাকশন ব্যর্থ হবে এবং পূর্ববর্তী কোনো পরিবর্তন করা হবে না। এই প্রক্রিয়া অ্যাটমিকিটি (Atomicity) নিশ্চিত করে, অর্থাৎ ট্রানজ্যাকশন চলাকালে সমস্ত কমান্ড একসাথে সফল হতে হবে।
Redis Transactions কীভাবে কাজ করে
রেডিসে ট্রানজ্যাকশন ব্যবহারের জন্য মূলত নিচের কমান্ডগুলোর ব্যবহার করা হয়:
- MULTI: ট্রানজ্যাকশন শুরু করার জন্য
MULTIকমান্ড ব্যবহার করা হয়। - EXEC: ট্রানজ্যাকশন কার্যকর করতে
EXECকমান্ড ব্যবহার করা হয়। - DISCARD: ট্রানজ্যাকশন বাতিল করতে
DISCARDকমান্ড ব্যবহার করা হয়। - WATCH: নির্দিষ্ট কিপেয়ারকে ট্রানজ্যাকশনের জন্য "অ্যাটমিক"ভাবে নজরদারি করতে
WATCHকমান্ড ব্যবহার করা হয়।
Redis Transaction Example
ধরা যাক, আপনি একটি ট্রানজ্যাকশন তৈরি করতে চান যা তিনটি রিড এবং রাইট অপারেশন একসাথে সম্পন্ন করবে।
MULTI
SET key1 "value1"
SET key2 "value2"
INCR key3
EXEC
এখানে:
- MULTI: ট্রানজ্যাকশন শুরু করার নির্দেশ।
- SET key1 "value1":
key1এর মানvalue1সেট করা। - SET key2 "value2":
key2এর মানvalue2সেট করা। - INCR key3:
key3এর মান ১ বাড়ানো। - EXEC: ট্রানজ্যাকশনটি কার্যকর করা।
এভাবে, ট্রানজ্যাকশন শুরু করার পর, সমস্ত কমান্ড সিরিজ একসাথে কার্যকর হবে। যদি EXEC কমান্ড না দেওয়া হয়, তবে কোনো পরিবর্তনই কার্যকর হবে না।
Redis Transaction-এর বৈশিষ্ট্য
- অ্যাটমিক অপারেশন (Atomic Operations):
- সমস্ত কমান্ড একটি একক "অপারেশন" হিসেবে কাজ করবে। যদি কোনো একটি কমান্ড ব্যর্থ হয়, তাহলে পুরো ট্রানজ্যাকশনটি ব্যর্থ হবে এবং কোনো পরিবর্তন করা হবে না।
- ব্যর্থ হলে ফিরে আসা (Rollback):
- রেডিসে ট্রানজ্যাকশনে কোনো ব্যর্থতা হলে, রোলব্যাক করার মতো মেকানিজম নেই। তবে আপনি
DISCARDকমান্ড ব্যবহার করে ট্রানজ্যাকশনটি বাতিল করতে পারেন।
- রেডিসে ট্রানজ্যাকশনে কোনো ব্যর্থতা হলে, রোলব্যাক করার মতো মেকানিজম নেই। তবে আপনি
- কমান্ডগুলি লাইন বাই লাইন কিউ করা (Queued Commands):
MULTIকমান্ডের পরে, সমস্ত কমান্ডগুলো লাইন বাই লাইন কিউ হয়ে যায়। যখনEXECকমান্ড দেওয়া হয়, তখন এই সমস্ত কমান্ড একসাথে কার্যকর করা হয়।
WATCH কমান্ড:
- আপনি ট্রানজ্যাকশনের জন্য WATCH কমান্ড ব্যবহার করে একটি বা একাধিক কিপেয়ারের মান নজরদারি করতে পারেন। যদি সেই কিপেয়ারটি কোনো পরিবর্তন হয়, ট্রানজ্যাকশনটি আর কার্যকর হবে না।
উদাহরণ:
WATCH key1 MULTI SET key1 "new_value" INCR key2 EXECএখানে
WATCHকমান্ডটিkey1কিপেয়ারটির মান পরিবর্তন হওয়া নজরদারি করবে। যদিkey1এর মান পরিবর্তন হয়, ট্রানজ্যাকশনটি আর কার্যকর হবে না এবংEXECকমান্ডটি ব্যর্থ হবে।
Redis Transaction Limitations
- লেজি এক্সিকিউশন (Lazy Execution):
- রেডিস ট্রানজ্যাকশন কমান্ডগুলোকে কিউ করে রাখে এবং
EXECকমান্ডের মাধ্যমে সমস্ত কমান্ড একসাথে কার্যকর করা হয়। ফলে, কোনো কমান্ড ট্রানজ্যাকশনের মধ্যে ব্যর্থ হলে, পুরো ট্রানজ্যাকশনটি ব্যর্থ হয়, কিন্তু প্রতিটি কমান্ডের ফলাফল দেখতে পারেন না যতক্ষণ নাEXECচালু করা হয়।
- রেডিস ট্রানজ্যাকশন কমান্ডগুলোকে কিউ করে রাখে এবং
- কেবলমাত্র রিড/রাইট অপারেশন (Only Write Operations):
- রেডিস ট্রানজ্যাকশন কেবলমাত্র SET, GET, INCR, LPUSH ইত্যাদি রিড/রাইট অপারেশন সমর্থন করে, কিন্তু READ কমান্ড (যেমন,
GETবাLRANGE) ট্রানজ্যাকশনের মধ্যে কাজ করবে না।
- রেডিস ট্রানজ্যাকশন কেবলমাত্র SET, GET, INCR, LPUSH ইত্যাদি রিড/রাইট অপারেশন সমর্থন করে, কিন্তু READ কমান্ড (যেমন,
- No Rollback:
- রেডিসে ট্রানজ্যাকশনের জন্য কোনো রোলব্যাক সুবিধা নেই। একটি ট্রানজ্যাকশন যদি ব্যর্থ হয়, তখন পূর্ববর্তী কোনো পরিবর্তন বাতিল করা যায় না।
Redis Transaction-এ Watch Command Example
WATCH কমান্ড ব্যবহার করা হয় ট্রানজ্যাকশনের মধ্যে কিপেয়ারগুলির পরিবর্তন নজরদারি করার জন্য, এবং যদি কিপেয়ারটি পরিবর্তিত হয়, তাহলে ট্রানজ্যাকশনটি কার্যকর করা হবে না।
WATCH key1
MULTI
SET key1 "new_value"
INCR key2
EXEC
এখানে:
- WATCH key1:
key1কিপেয়ারটি ট্রানজ্যাকশনের জন্য নজরদারি করা হবে। - MULTI: ট্রানজ্যাকশন শুরু করা।
- SET key1 "new_value":
key1এর মানnew_valueসেট করা। - INCR key2:
key2এর মান ১ বাড়ানো। - EXEC: ট্রানজ্যাকশন কার্যকর করা।
যদি key1 এর মান WATCH কমান্ড দেওয়ার পর পরিবর্তিত হয়, তবে ট্রানজ্যাকশনটি ব্যর্থ হবে এবং কোনো পরিবর্তন কার্যকর হবে না।
সারাংশ
রেডিস ট্রানজ্যাকশন হল একাধিক কমান্ডকে একসাথে অ্যাটমিকভাবে এক্সিকিউট করার একটি প্রক্রিয়া। এটি MULTI, EXEC, DISCARD, এবং WATCH কমান্ড ব্যবহার করে কাজ করে, যা ডেটা একসাথে রিড/রাইট অপারেশন সুরক্ষিতভাবে সম্পাদন করতে সহায়তা করে। ট্রানজ্যাকশনে কোনো একটি কমান্ড ব্যর্থ হলে পুরো ট্রানজ্যাকশন ব্যর্থ হয়ে যাবে।
Read more