Redis তে Transactions কী? গাইড ও নোট

Database Tutorials - রেডিস (Redis) - Transactions এবং Pipelining
357

রেডিস ট্রানজ্যাকশন (Transactions) হল একটি প্রক্রিয়া যার মাধ্যমে একাধিক কমান্ড একসাথে গ্রুপ করা যায়, যাতে এগুলি একসাথে অ্যাটমিকভাবে (atomic) সম্পন্ন হয়। রেডিসে ট্রানজ্যাকশনগুলি কমান্ডের একটি সিরিজ থাকে, যা সফলভাবে সম্পন্ন হলে তাদের সবকটিকে একসাথে কার্যকর করা হয়, অন্যথায় কোনো একটিরও পরিবর্তন কার্যকর করা হয় না।

রেডিসে ট্রানজ্যাকশন ব্যবহারের মাধ্যমে আপনি নিশ্চিত করতে পারেন যে, যদি কোনো কমান্ড ব্যর্থ হয়, তাহলে পুরো ট্রানজ্যাকশন ব্যর্থ হবে এবং পূর্ববর্তী কোনো পরিবর্তন করা হবে না। এই প্রক্রিয়া অ্যাটমিকিটি (Atomicity) নিশ্চিত করে, অর্থাৎ ট্রানজ্যাকশন চলাকালে সমস্ত কমান্ড একসাথে সফল হতে হবে।


Redis Transactions কীভাবে কাজ করে

রেডিসে ট্রানজ্যাকশন ব্যবহারের জন্য মূলত নিচের কমান্ডগুলোর ব্যবহার করা হয়:

  1. MULTI: ট্রানজ্যাকশন শুরু করার জন্য MULTI কমান্ড ব্যবহার করা হয়।
  2. EXEC: ট্রানজ্যাকশন কার্যকর করতে EXEC কমান্ড ব্যবহার করা হয়।
  3. DISCARD: ট্রানজ্যাকশন বাতিল করতে DISCARD কমান্ড ব্যবহার করা হয়।
  4. 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-এর বৈশিষ্ট্য

  1. অ্যাটমিক অপারেশন (Atomic Operations):
    • সমস্ত কমান্ড একটি একক "অপারেশন" হিসেবে কাজ করবে। যদি কোনো একটি কমান্ড ব্যর্থ হয়, তাহলে পুরো ট্রানজ্যাকশনটি ব্যর্থ হবে এবং কোনো পরিবর্তন করা হবে না।
  2. ব্যর্থ হলে ফিরে আসা (Rollback):
    • রেডিসে ট্রানজ্যাকশনে কোনো ব্যর্থতা হলে, রোলব্যাক করার মতো মেকানিজম নেই। তবে আপনি DISCARD কমান্ড ব্যবহার করে ট্রানজ্যাকশনটি বাতিল করতে পারেন।
  3. কমান্ডগুলি লাইন বাই লাইন কিউ করা (Queued Commands):
    • MULTI কমান্ডের পরে, সমস্ত কমান্ডগুলো লাইন বাই লাইন কিউ হয়ে যায়। যখন EXEC কমান্ড দেওয়া হয়, তখন এই সমস্ত কমান্ড একসাথে কার্যকর করা হয়।
  4. WATCH কমান্ড:

    • আপনি ট্রানজ্যাকশনের জন্য WATCH কমান্ড ব্যবহার করে একটি বা একাধিক কিপেয়ারের মান নজরদারি করতে পারেন। যদি সেই কিপেয়ারটি কোনো পরিবর্তন হয়, ট্রানজ্যাকশনটি আর কার্যকর হবে না।

    উদাহরণ:

    WATCH key1
    MULTI
    SET key1 "new_value"
    INCR key2
    EXEC
    

    এখানে WATCH কমান্ডটি key1 কিপেয়ারটির মান পরিবর্তন হওয়া নজরদারি করবে। যদি key1 এর মান পরিবর্তন হয়, ট্রানজ্যাকশনটি আর কার্যকর হবে না এবং EXEC কমান্ডটি ব্যর্থ হবে।


Redis Transaction Limitations

  1. লেজি এক্সিকিউশন (Lazy Execution):
    • রেডিস ট্রানজ্যাকশন কমান্ডগুলোকে কিউ করে রাখে এবং EXEC কমান্ডের মাধ্যমে সমস্ত কমান্ড একসাথে কার্যকর করা হয়। ফলে, কোনো কমান্ড ট্রানজ্যাকশনের মধ্যে ব্যর্থ হলে, পুরো ট্রানজ্যাকশনটি ব্যর্থ হয়, কিন্তু প্রতিটি কমান্ডের ফলাফল দেখতে পারেন না যতক্ষণ না EXEC চালু করা হয়।
  2. কেবলমাত্র রিড/রাইট অপারেশন (Only Write Operations):
    • রেডিস ট্রানজ্যাকশন কেবলমাত্র SET, GET, INCR, LPUSH ইত্যাদি রিড/রাইট অপারেশন সমর্থন করে, কিন্তু READ কমান্ড (যেমন, GET বা LRANGE) ট্রানজ্যাকশনের মধ্যে কাজ করবে না।
  3. 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 কমান্ড ব্যবহার করে কাজ করে, যা ডেটা একসাথে রিড/রাইট অপারেশন সুরক্ষিতভাবে সম্পাদন করতে সহায়তা করে। ট্রানজ্যাকশনে কোনো একটি কমান্ড ব্যর্থ হলে পুরো ট্রানজ্যাকশন ব্যর্থ হয়ে যাবে।

Content added By
Promotion

Are you sure to start over?

Loading...