एंटीरेज़ ने कहा, https://news.ycombinator.com/item?id=1171423
इसके कुछ कारण हैं:
- वे बहुत अधिक स्मृति गहन नहीं हैं। यह मूल रूप से आप पर निर्भर है। किसी नोड के दिए गए स्तरों की संख्या होने की संभावना के बारे में पैरामीटर बदलने से btrees की तुलना में कम मेमोरी गहन हो जाएगी।
- एक सॉर्ट किया गया सेट अक्सर कई ZRANGE या ZREVRANGE ऑपरेशंस का लक्ष्य होता है, जो कि लिंक्ड लिस्ट के रूप में स्किप लिस्ट को ट्रेस करता है। इस ऑपरेशन के साथ स्किप सूचियों का कैश स्थान कम से कम उतना ही अच्छा है जितना कि अन्य प्रकार के संतुलित पेड़ों के साथ।
- उन्हें लागू करना, डीबग करना और भी बहुत कुछ आसान है। उदाहरण के लिए स्किप सूची सादगी के लिए धन्यवाद, मुझे ओ (लॉग (एन)) में ZRANK को लागू करने वाली संवर्धित स्किप सूचियों के साथ एक पैच (पहले से ही रेडिस मास्टर में) प्राप्त हुआ। इसके लिए कोड में थोड़े बदलाव की आवश्यकता थी।
एपेंड ओनली ड्यूरेबिलिटी और स्पीड के बारे में, मुझे नहीं लगता कि अधिक कोड की कीमत पर रेडिस को ऑप्टिमाइज़ करना एक अच्छा विचार है और उपयोग के मामले में अधिक जटिलता है कि आईएमएचओ रेडिस लक्ष्य के लिए दुर्लभ होना चाहिए (प्रत्येक कमांड पर fsync ()) . लगभग कोई भी इस सुविधा का उपयोग ACID SQL डेटाबेस के साथ भी नहीं कर रहा है, क्योंकि प्रदर्शन संकेत वैसे भी बड़ा है।
थ्रेड्स के बारे में:हमारे अनुभव से पता चलता है कि रेडिस ज्यादातर I/O बाध्य है। मैं वर्चुअल मेमोरी से चीजों को परोसने के लिए थ्रेड्स का उपयोग कर रहा हूं। सभी कोर का दोहन करने के लिए दीर्घकालिक समाधान, यह मानते हुए कि आपका लिंक इतना तेज़ है कि आप एक कोर को संतृप्त कर सकते हैं, रेडिस के कई उदाहरण चला रहा है (कोई ताले नहीं, लगभग पूरी तरह से कोर की संख्या के साथ रैखिक रूप से स्केलेबल), और "रेडिस क्लस्टर" का उपयोग कर रहा है " समाधान जिसे मैं भविष्य में विकसित करने की योजना बना रहा हूं।