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

Redis-এ বড় সর্টেড সেট দক্ষতার সাথে ডিলিট করার পদ্ধতি

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

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

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

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

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

슈ডো-কোড

# কী রিনেম করুন newkey = "gc:hashes:" + redis.INCR("gc:index") redis.RENAME("my.zset.key", newkey) # সর্টেড সেট থেকে সদস্যরা ১০০-র ব্যাচে ডিলিট করুন while redis.ZCARD(newkey) > 0 redis.ZREMRANGEBYRANK(newkey, 0, 99) end 

Ruby

$redis = Redis.new def delete_sorted_set(key) # কী রিনেম করুন newkey = "gc:zsets:#{$redis.incr("gc:index")}" $redis.rename(key, newkey) # সর্টেড সেট থেকে সদস্যরা ১০০-র ব্যাচে ডিলিট করুন while $redis.zcard(newkey) > 0 $redis.zremrangebyrank(newkey, 0, 99) end end # উদাহরণ: # # delete_sorted_set("my.large.set")

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

  • Resque
  • Sidekiq

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


  1. Redis ZRANK ও ZREVRANK: সর্টেড সেট র‍্যাঙ্কিং দক্ষতার সাথে করুন

  2. রেডিস ZREVRANGE দক্ষতা: ডিসেন্ডিং র‍্যাঙ্ক অর্ডারে সর্টেড সেট এলিমেন্ট রিট্রিভ করুন

  3. রেডিস ZRANGE ব্যবহার: অ্যাসেন্ডিং র‍্যাঙ্ক র‍্যাঞ্জ অনুযায়ী সর্টেড সেট এলিমেন্ট ফেচ করুন

  4. রেডিস ZCARD দিয়ে সর্টেড সেটের আকার খুঁজুন