रेडिस में बड़ी वस्तुओं को हटाना धीमा क्यों है, इस बारे में अधिक जानने के लिए, इस त्वरित अवलोकन को पढ़ें
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")
रूबी में बैकग्राउंड जॉब का उपयोग करके उपरोक्त के कुछ उदाहरण कार्यान्वयन यहां दिए गए हैं:
- अनुरोध
- साइडकीक
← "Redis में बड़ी वस्तुओं को हटाना" पर वापस जाएं