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