কম্পিউটার

রেডিসে বড় সেট মুছে ফেলা হচ্ছে

Redis-এ বড় বস্তু মুছে ফেলা কেন ধীর হয় সে সম্পর্কে আরও জানতে, এই দ্রুত ওভারভিউ পড়ুন

Redis-এ একটি বড় সেট মুছতে:

  1. একটি অনন্য, নামস্থানযুক্ত কীতে কীটির নাম পরিবর্তন করুন যাতে সেটটি অবিলম্বে অন্যান্য রেডিস ক্লায়েন্টদের কাছে "মুছে ফেলা" প্রদর্শিত হয়৷

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

অনুগ্রহ করে মনে রাখবেন যে নিম্নলিখিত কোডটি রেডিস সংযোগ ব্যর্থতাগুলিকে সুন্দরভাবে পরিচালনা করে না। যদি কোন Redis কমান্ড ব্যর্থ হয় এবং একটি ব্যতিক্রম উত্থাপন করে, তাহলে আপনাকে ম্যানুয়ালি পরিষ্কার করতে হবে।

ছদ্ম-কোড

# Rename the key
newkey = "gc:hashes:" + redis.INCR("gc:index")
redis.RENAME("my.set.key", newkey)

# Delete members from the set in batches of 100
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

রুবি

$redis = Redis.new

def delete_set(key)
  # Rename the key
  newkey = "gc:sets:#{$redis.incr("gc:index")}"
  $redis.rename(key, newkey)

  # Delete members from the set in batches of 100
  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

# Example:
#
#   delete_set("my.large.set")

এখানে রুবিতে ব্যাকগ্রাউন্ড জব ব্যবহার করে উপরোক্ত কিছু উদাহরণ প্রয়োগ করা হল:

  • উত্তর
  • Sidekiq

← “Redis-এ বড় বস্তু মুছে ফেলা”-এ ফিরে যান


  1. Redis GEOHASH – কিভাবে ভূ-স্থানিক মানের একাধিক সদস্যের জিওহ্যাশ স্ট্রিং পেতে হয়

  2. Redis GEOPOS – কিভাবে দ্রাঘিমাংশ পেতে হয়, ভূ-স্থানিক মানের একাধিক সদস্যের অক্ষাংশ

  3. Redis GEODIST - কিভাবে ভূ-স্থানিক মানের দুই সদস্যের মধ্যে দূরত্ব পেতে হয়

  4. কিভাবে এক্সেলে বড় ডেটা সেট বিশ্লেষণ করবেন (6টি কার্যকরী পদ্ধতি)