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