Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Redis

रेडिस में बड़े हैश हटाना

रेडिस में बड़ी वस्तुओं को हटाना धीमा क्यों है, इस बारे में अधिक जानने के लिए, इस त्वरित अवलोकन को पढ़ें

Redis में एक बड़ा हैश हटाने के लिए:

  1. कुंजी को एक अद्वितीय, नेमस्पेस्ड कुंजी का नाम दें ताकि हैश अन्य रेडिस क्लाइंट को तुरंत "डिलीट" दिखाई दे।

  2. खाली होने तक हैश से छोटे बैचों में फ़ील्ड हटाएं। हमारे डिलीट कमांड के आकार को सीमित करके, हम सुनिश्चित करते हैं कि हम सर्वर को बहुत लंबे समय तक ब्लॉक नहीं करते हैं।

कृपया ध्यान दें कि निम्न कोड रेडिस कनेक्शन विफलताओं को इनायत से नहीं संभालता है। यदि कोई रेडिस कमांड विफल हो जाता है और अपवाद उत्पन्न करता है, तो आपको मैन्युअल रूप से सफाई करनी होगी।

छद्म कोड

# Rename the key
newkey = "gc:hashes:" + redis.INCR( "gc:index" )
redis.RENAME("my.hash.key", newkey)

# Delete fields from the hash in batche of 100s
cursor = 0
loop
  cursor, hash_keys = redis.HSCAN(newkey, cursor, "COUNT", 100)
  if hash_keys count > 0
    redis.HDEL(newkey, hash_keys)
  end
  if cursor == 0
    break
  end
end

रूबी

$redis = Redis.new

def delete_hash(key)
  # Rename the key
  newkey = "gc:hashes:#{$redis.incr("gc:index")}"
  $redis.rename(key, newkey)

  # Delete fields from the hash in batches of 100
  cursor = "0"
  loop do
    cursor, fields = $redis.hscan(newkey, cursor, count: 100)
    hkeys = fields.map { |pair| pair[0] }
    $redis.hdel(newkey, hkeys) if hkeys.size > 0
    break if cursor == "0"
  end
end

# Example:
#
#   delete_hash("my.large.hash")

रूबी में बैकग्राउंड जॉब का उपयोग करके उपरोक्त के कुछ उदाहरण कार्यान्वयन यहां दिए गए हैं:

  • अनुरोध
  • साइडकीक

← "Redis में बड़ी वस्तुओं को हटाना" पर वापस जाएं


  1. Redis.io को ताज़ा और विस्तारित करना

    आज हमें Redis.io के पुन:लॉन्च की घोषणा करते हुए खुशी हो रही है। Redis.io हमेशा से Redis का घर रहा है और नए Redis उपयोगकर्ताओं के लिए प्रवेश बिंदु रहा है। इस लॉन्च के साथ, हमने साइट के डिज़ाइन को आधुनिक बनाने और इसके बुनियादी ढांचे को अपडेट करते हुए कोर रेडिस दस्तावेज़ीकरण को संशोधित किया है। इस पो

  1. रेडिस में हैश का उपयोग करना

    रेडिस में हैश संबंधित फ़ील्ड-वैल्यू जोड़े को एक ही कुंजी के तहत संग्रहीत करने का एक तरीका है, जहां फ़ील्ड और मान दोनों स्ट्रिंग हैं। रेडिस समग्र रूप से डेटा संरचना और संरचना के प्रत्येक क्षेत्र में संशोधन की अनुमति देता है। यह इसे किसी एप्लिकेशन में ऑब्जेक्ट के लिए एक बढ़िया (और बहुत तेज़) बैकिंग स्

  1. तेजी से गणना में रेडिस का प्रयोग करें

    यह उदाहरण Fastly CLI के पुराने संस्करण का उपयोग करता है। अप-टू-डेट संस्करण के लिए इस लेख को देखें। इस पोस्ट में हम एक साधारण एप्लीकेशन लिखेंगे जो Fastly Compute@Edge पर चलेगी। एप्लिकेशन पृष्ठ दृश्यों का ट्रैक रखने के लिए Upstash Redis को एक्सेस करेगा। प्रेरणा एज कंप्यूटिंग हाल के वर्षों में सबसे