রেডিসের MULTI, EXEC, DISCARD, এবং WATCH কমান্ডগুলি ব্যবহারকারীদের ট্রানজেকশনাল অপারেশন সম্পাদন করতে সহায়তা করে, যেখানে একাধিক কমান্ড একযোগে চালানো হয়, এবং একটি কমান্ডের ফলাফল পরবর্তী কমান্ডের উপর প্রভাব ফেলতে পারে। রেডিসের এই কমান্ডগুলো মূলত Atomicity (অ্যাটমিকতা), Consistency (সঙ্গতি), Isolation (অইসলেশন) এবং Durability (স্থায়িত্ব) এর মূল ধারণাগুলি অনুসরণ করে।
এগুলো ট্রানজেকশনাল কমান্ড হিসেবে কাজ করে, যা একসাথে একাধিক রেডিস কমান্ড একযোগে চালানোর সুবিধা দেয় এবং সেগুলোর মধ্যে কোনও একটিও ব্যর্থ হলে, সবগুলো কমান্ডই বাতিল হয়ে যায়।
১. MULTI
MULTI কমান্ডের মাধ্যমে রেডিস একটি ট্রানজেকশন শুরু হয়, যার মধ্যে আপনি একাধিক কমান্ড একযোগে রান করাতে পারবেন। MULTI কমান্ড একবার রান করার পর, পরবর্তী কমান্ডগুলো একটি ট্রানজেকশনে রান করা হবে। এর মানে হলো, আপনি যেসব কমান্ড রান করবেন, সেগুলো একযোগে সম্পাদিত হবে (যতক্ষণ না EXEC কমান্ড দেয়ার মাধ্যমে তা কমিট করা হয়)।
ব্যবহার:
MULTI
SET key1 "value1"
SET key2 "value2"
GET key1
EXEC
এখানে:
MULTIট্রানজেকশন শুরু করে।- পরবর্তী
SETএবংGETকমান্ডগুলো একটি ট্রানজেকশনের অংশ হিসেবে চলবে। EXECকমান্ডের মাধ্যমে ট্রানজেকশনটি সম্পন্ন হবে এবং কমান্ডগুলোর ফলাফল পাওয়া যাবে।
২. EXEC
EXEC কমান্ডের মাধ্যমে পূর্ববর্তী MULTI কমান্ডের অধীনে থাকা সকল কমান্ড একযোগে বাস্তবায়িত হয়। EXEC এর মাধ্যমে ট্রানজেকশনটি কমিট করা হয় এবং এতে করা সমস্ত পরিবর্তন রেডিসে কার্যকর হয়ে যায়।
ব্যবহার:
MULTI
SET key1 "value1"
SET key2 "value2"
EXEC
এখানে:
MULTIট্রানজেকশন শুরু করে।SETকমান্ড দুটি একযোগে সম্পাদিত হবে।EXECকমান্ডের মাধ্যমে, ট্রানজেকশনটি সম্পন্ন হবে এবং সব কমান্ড একযোগে কার্যকর হবে।
৩. DISCARD
DISCARD কমান্ডের মাধ্যমে আপনি MULTI দিয়ে শুরু করা ট্রানজেকশনটি বাতিল করতে পারেন। এটি সমস্ত পূর্ববর্তী কমান্ড বাতিল করে দেয় এবং ট্রানজেকশনটি সম্পন্ন না হওয়ার আগে যে কোনও পরিবর্তন করা হবে না।
ব্যবহার:
MULTI
SET key1 "value1"
SET key2 "value2"
DISCARD
এখানে:
MULTIদিয়ে ট্রানজেকশন শুরু হয়।SETকমান্ডগুলো একত্রে রান করার জন্য স্থির করা হয়।- কিন্তু,
DISCARDকমান্ডটি দিয়ে ট্রানজেকশন বাতিল করা হয়, ফলে কোনও পরিবর্তন করা হবে না এবং ট্রানজেকশনটি সম্পন্ন হবে না।
৪. WATCH
WATCH কমান্ডের মাধ্যমে আপনি একটি বা একাধিক কিপেয়ার "নজরদারি" করতে পারেন। এর মানে হলো, আপনি যে কিপেয়ারগুলোর উপর ট্রানজেকশন চালাবেন, যদি তারা অন্য কোনও ক্লায়েন্ট দ্বারা পরিবর্তিত হয়, তবে সেই ট্রানজেকশন ব্যর্থ হবে। এটি রেডিসের Optimistic Locking ব্যবস্থা হিসেবে কাজ করে, যা নিশ্চিত করে যে ট্রানজেকশন চালানোর আগে কিপেয়ারটি পরিবর্তিত হয়নি।
ব্যবহার:
WATCH key1
MULTI
SET key1 "new value"
EXEC
এখানে:
WATCH key1দিয়ে আমরা কিপেয়ারkey1এর উপর নজরদারি শুরু করি।- যদি এই কিপেয়ারটি অন্য কোনো ক্লায়েন্ট দ্বারা পরিবর্তিত হয়, তবে পরবর্তী ট্রানজেকশন ব্যর্থ হবে।
MULTIএবংEXECদিয়ে ট্রানজেকশন পরিচালিত হয়, তবে যদিkey1পরিবর্তিত হয়, তাহলেEXECকমান্ড ব্যর্থ হবে।
WATCH-এর সাথে একটি উদাহরণ:
WATCH key1
MULTI
INCR key1
EXEC
এখানে:
- প্রথমে
WATCH key1দিয়েkey1এর উপর নজরদারি শুরু করা হয়। INCR key1কমান্ডটি চালানোর জন্য ট্রানজেকশন শুরু করা হয়।- যদি অন্য কোনও ক্লায়েন্ট
key1পরিবর্তন না করে, তাহলেINCR key1সফলভাবে রান হবে। - তবে, যদি অন্য ক্লায়েন্ট
key1পরিবর্তন করে, তাহলেEXECকমান্ড ব্যর্থ হবে এবংINCRকমান্ডটি সম্পাদিত হবে না।
ট্রানজেকশনের Flow:
- MULTI: ট্রানজেকশন শুরু।
- কমান্ডগুলো: একাধিক কমান্ড রান করা হয়, তবে এগুলো বাস্তবায়িত হয় না যতক্ষণ না
EXECদেয়া হয়। - WATCH (ঐচ্ছিক): যদি নির্দিষ্ট কিপেয়ারগুলোর উপর নজরদারি করতে চান, তবে
WATCHব্যবহার করতে পারেন। - DISCARD (ঐচ্ছিক): যদি ট্রানজেকশন বাতিল করতে চান, তবে
DISCARDব্যবহার করতে পারেন। - EXEC: ট্রানজেকশন কমিট করা হয় এবং সকল কমান্ড একযোগে বাস্তবায়িত হয়।
সারাংশ
- MULTI: ট্রানজেকশন শুরু করে, যেখানে একাধিক কমান্ড একসাথে রান হবে।
- EXEC: ট্রানজেকশন কমিট করে এবং পূর্ববর্তী সমস্ত কমান্ড একসাথে কার্যকর হয়।
- DISCARD: ট্রানজেকশন বাতিল করে, কোন কমান্ড কার্যকর হয় না।
- WATCH: এক বা একাধিক কিপেয়ারকে নজরদারি করে, যদি কিপেয়ার পরিবর্তিত হয়, তবে ট্রানজেকশন ব্যর্থ হয়ে যাবে।
এই কমান্ডগুলো একসাথে ব্যবহার করে, আপনি রেডিসে অ্যাটমিক ট্রানজেকশন সম্পাদন করতে পারবেন যা নিশ্চিত করে যে আপনার ডেটার সঙ্গতি ও নিরাপত্তা রক্ষা হবে।
Read more