কম্পিউটার টিউটোরিয়াল

Redis-এ বড় সেট সার্ভার ব্লক না করিয়ে দক্ষতার সাথে ডিলিট করুন

Redis-এ বড় অবজেক্ট ডিলিট করা কেন স্লো, সে সম্পর্কে জানতে এই সংক্ষিপ্ত ওভারভিউ পড়ুন

Redis-এ একটি বড় সেট ডিলিট করতে:

  1. কীকে একটি ইউনিক, নেমস্পেসড কীতে রিনেম করুন যাতে সেটটি অন্য Redis ক্লায়েন্টদের কাছে "ডিলিটড" দেখাবে azonই।

  2. সেট থেকে সদস্যরা ছোট ছোট ব্যাচে ইনক্রিমেন্টালি ডিলিট করুন যতক্ষণ না সেটি খালি হয়। আমাদের ডিলিট কমান্ডের সাইজ লিমিট করে আমরা নিশ্চিত করি যে সার্ভারকে অনেকক্ষণ ব্লক করতে হয় না।

দয়া করে নোট করুন যে নিচের কোড Redis কানেকশন ফেইলার গ্রেসফুলি হ্যান্ডেল করে না। যদি কোনো Redis কমান্ড ফেইল হয় এবং এক্সেপশন থ্রো করে, তবে আপনাকে ম্যানুয়ালি ক্লিন আপ করতে হবে।

슈ডো-কোড

# কী রিনেম করুন newkey = "gc:hashes:" + redis.INCR("gc:index") redis.RENAME("my.set.key", newkey) # সেট থেকে সদস্যরা ১০০-র ব্যাচে ডিলিট করুন cursor = 0 loop cursor, members = redis.SSCAN(newkey, cursor, "COUNT", 100) if size of members > 0 redis.SREM(newkey, members) end if cursor == 0 break end end 

Ruby

$redis = Redis.new def delete_set(key) # কী রিনেম করুন newkey = "gc:sets:#{$redis.incr("gc:index")}" $redis.rename(key, newkey) # সেট থেকে সদস্যরা ১০০-র ব্যাচে ডিলিট করুন cursor = "0" loop do cursor, members = $redis.sscan(newkey, cursor, count: 100) $redis.srem(newkey, members) if members.size > 0 break if cursor == "0" end end # উদাহরণ: # # delete_set("my.large.set")

উপরের পদ্ধতির ব্যাকগ্রাউন্ড জব ব্যবহার করে কিছু উদাহরণ ইমপ্লিমেন্টেশন Ruby-তে:

  • Resque
  • Sidekiq

← "Deleting Large Objects in Redis"-এ ফিরে যান


  1. রেডিস GEOHASH: জিওস্পেশিয়াল সদস্যদের জিওহ্যাশ স্ট্রিং রিট্রিভ করুন

  2. রেডিস GEOPOS: একাধিক জিওস্পেশিয়াল কোঅর্ডিনেট রিট্রিভ করার ধাপে ধাপে গাইড

  3. রেডিস GEODIST দিয়ে জিওস্পেশিয়াল সদস্যদের মধ্যে দূরত্ব হিসাব করুন

  4. এক্সেল মাস্টার করুন: বড় ডেটা সেট বিশ্লেষণের ৬টি শক্তিশালী কৌশল