Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

क्या UNLINK कमांड हमेशा DEL कमांड से बेहतर होता है?

चर्चा करने से पहले कि कौन सा बेहतर है, आइए इन आदेशों के बीच के अंतर को देखें। दोनों DEL और UNLINK ब्लॉकिंग मोड में मुख्य भाग को मुक्त करें। और अंतर यह है कि वे मूल्य भाग को कैसे मुक्त करते हैं।

DEL हमेशा ब्लॉकिंग मोड में वैल्यू पार्ट को फ्री करता है। हालांकि, अगर मान बहुत बड़ा है, उदा. एक बड़े LIST . के लिए बहुत अधिक आवंटन या HASH , यह लंबे समय तक रेडिस को अवरुद्ध करता है। समस्या को हल करने के लिए, Redis UNLINK . को लागू करता है कमांड, यानी एक 'नॉन-ब्लॉकिंग' डिलीट।

वास्तव में, UNLINK हमेशा गैर-अवरुद्ध/async नहीं होता . यदि मान छोटा है, उदा। LIST . का आकार या HASH 64 . से कम है , मान तुरंत मुक्त हो जाएगा। इस तरह, UNLINK लगभग DEL . जैसा ही है , सिवाय इसके कि इसमें DEL . की तुलना में कुछ अधिक फ़ंक्शन कॉल का खर्च आता है . हालाँकि, यदि मान बड़ा है, तो Redis मान को एक सूची में रखता है, और मान को किसी अन्य थ्रेड द्वारा मुक्त किया जाएगा अर्थात गैर-अवरुद्ध मुक्त। इस तरह, मुख्य थ्रेड को बैकग्राउंड थ्रेड के साथ कुछ सिंक्रोनाइज़ेशन करना पड़ता है, और यह भी एक लागत है।

निष्कर्ष में, यदि मान छोटा है, DEL कम से कम उतना ही अच्छा है जितना UNLINK . यदि मान बहुत बड़ा है, उदा. LIST हजारों या लाखों वस्तुओं के साथ, UNLINK DEL . से काफी बेहतर है . आप हमेशा DEL . को सुरक्षित रूप से बदल सकते हैं UNLINK . के साथ . हालांकि, अगर आपको लगता है कि थ्रेड सिंक्रोनाइज़ेशन एक समस्या बन जाता है (मल्टी-थ्रेडिंग हमेशा एक सिरदर्द होता है), तो आप DEL पर रोलबैक कर सकते हैं ।

अद्यतन करें:

Redis 6.0 के बाद से, एक नया कॉन्फ़िगरेशन है:आलसी-आलसी-उपयोगकर्ता-डेल . आप इसे हां . पर सेट कर सकते हैं , और रेडिस DEL चलाएगा कमांड जैसे कि कोई UNLINK चल रहा हो आदेश।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. रेडिस डेटा को MySQL में स्थानांतरित करने का तेज़ तरीका

  2. NodeJS - बाहरी रेडिस सर्वर से सुरक्षित रूप से कनेक्ट करें

  3. रीयल-टाइम स्टॉक एप्लिकेशन के लिए रेडिस कुंजी डिज़ाइन

  4. रनटाइम त्रुटि:-ईआरआर अज्ञात कमांड रूबी पर रेडिस रत्न चला रहा है

  5. रेडिस सर्विसस्टैक पूल कनेक्शन क्लाइंट