Redis-এ বড় বস্তু মুছে ফেলা কেন ধীর হয় সে সম্পর্কে আরও জানতে, এই দ্রুত ওভারভিউ পড়ুন
Redis-এ একটি বড় সেট মুছতে:
-
একটি অনন্য, নামস্থানযুক্ত কীতে কীটির নাম পরিবর্তন করুন যাতে সেটটি অবিলম্বে অন্যান্য রেডিস ক্লায়েন্টদের কাছে "মুছে ফেলা" প্রদর্শিত হয়৷
-
ক্রমবর্ধমানভাবে সদস্যদের ছোট ব্যাচে সেট থেকে মুছে ফেলুন যতক্ষণ না এটি খালি হয়। আমাদের ডিলিট কমান্ডের আকার সীমিত করে, আমরা নিশ্চিত করি যে আমরা সার্ভারটিকে খুব বেশি সময়ের জন্য ব্লক করব না।
অনুগ্রহ করে মনে রাখবেন যে নিম্নলিখিত কোডটি রেডিস সংযোগ ব্যর্থতাগুলিকে সুন্দরভাবে পরিচালনা করে না। যদি কোন 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-এ বড় বস্তু মুছে ফেলা”-এ ফিরে যান