रेडिस में बड़ी वस्तुओं को हटाना धीमा क्यों है, इस बारे में अधिक जानने के लिए, इस त्वरित अवलोकन को पढ़ें
Redis में एक बड़े सॉर्ट किए गए सेट को हटाने के लिए:
-
एक अद्वितीय, नेमस्पेस्ड कुंजी के लिए कुंजी का नाम बदलें ताकि सॉर्ट किया गया सेट अन्य रेडिस क्लाइंट को तुरंत "डिलीट" दिखाई दे।
-
छोटे बैचों में सॉर्ट किए गए सेट से सदस्यों को तब तक हटाएं जब तक कि यह खाली न हो जाए। हमारे डिलीट कमांड के आकार को सीमित करके, हम यह सुनिश्चित करते हैं कि हम सर्वर को बहुत लंबे समय तक ब्लॉक न करें।
कृपया ध्यान दें कि निम्न कोड रेडिस कनेक्शन विफलताओं को इनायत से नहीं संभालता है। यदि कोई रेडिस कमांड विफल हो जाता है और अपवाद उत्पन्न करता है, तो आपको मैन्युअल रूप से सफाई करनी होगी।
छद्म कोड
# Rename the key
newkey = "gc:hashes:" + redis.INCR("gc:index")
redis.RENAME("my.zset.key", newkey)
# Delete members from the sorted set in batche of 100s
while redis.ZCARD(newkey) > 0
redis.ZREMRANGEBYRANK(newkey, 0, 99)
end
रूबी
$redis = Redis.new
def delete_sorted_set(key)
# Rename the key
newkey = "gc:zsets:#{$redis.incr("gc:index")}"
$redis.rename(key, newkey)
# Delete members from the sorted set in batches of 100
while $redis.zcard(newkey) > 0
$redis.zremrangebyrank(newkey, 0, 99)
end
end
# Example:
#
# delete_sorted_set("my.large.set")
रूबी में बैकग्राउंड जॉब का उपयोग करके उपरोक्त के कुछ उदाहरण कार्यान्वयन यहां दिए गए हैं:
- अनुरोध
- साइडकीक
← "Redis में बड़ी वस्तुओं को हटाना" पर वापस जाएं