2010-10-19 4 views
49

मैं रेडिस को देख रहा हूं। यह बहुत दिलचस्प लग रहा है। लेकिन व्यावहारिक परिप्रेक्ष्य से, माईएसक्यूएल पर रेडिस का उपयोग करना बेहतर होगा?PHP अनुप्रयोगों के लिए MySQL के बजाय Redis का उपयोग कब करें?

+0

क्या आपने इसे पढ़ा है: http://www.mysqlperformanceblog.com/2009/08/27/looking-at-redis/? मैं सब समझ नहीं पा रहा हूं (मैं फ्रेंच हूं) लेकिन यह दिलचस्प लगता है। – MatTheCat

+0

धन्यवाद। हाँ यह दिलचस्प है। हालांकि मैं अभी भी व्यावहारिक अनुप्रयोगों के बारे में निश्चित नहीं हूं। –

+0

संबंधित लेकिन कोई बनाम MySQL विशिष्ट नहीं: http://stackoverflow.com/questions/7888880/what-is-redis-and-what-do-i-use-it-for?rq=1 –

उत्तर

67

संपूर्ण नोएसक्यूएल बनाम एसक्यूएल बहस को अनदेखा करते हुए, मुझे लगता है कि सबसे अच्छा तरीका उन्हें गठबंधन करना है। दूसरे शब्दों में, सिस्टम के कुछ हिस्सों (जटिल लुकअप, लेनदेन) और दूसरों के लिए रेडिस (प्रदर्शन, काउंटर इत्यादि) के लिए MySQL का उपयोग करें।

मेरे अनुभव में, स्केलेबिलिटी (उपयोगकर्ताओं के बहुत सारे ...) से संबंधित प्रदर्शन मुद्दे अंततः आपको MySQL सर्वर से लोड हटाने के लिए किसी प्रकार का कैश जोड़ने के लिए मजबूर करता है और predis/memcache आदि उस पर बहुत अच्छा है।

15

मैं कोई रेडिस विशेषज्ञ नहीं हूं, लेकिन जो मैंने एकत्र किया है, दोनों बहुत अलग हैं। Redis:

  • एक संबंधपरक डेटाबेस (कोई फैंसी डेटा संगठन) नहीं है
  • स्टोर स्मृति में सब कुछ (तेज, कम जगह, शायद कम सुरक्षित एक दुर्घटना के मामले में)
  • कम व्यापक रूप से विभिन्न पर तैनात है webhosts (आप अपने आप को होस्टिंग अगर नहीं कर रहे हैं)

मुझे लगता है कि आप जब आप डेटा की एक छोटी-ish मात्रा कि रिलेशनल संरचना है कि MySQL प्रदान करता है की जरूरत नहीं है के लिए Redis उपयोग करने के लिए चाहते हो सकता है, और तेजी से की आवश्यकता है पहुंच। यह उदाहरण के लिए गतिशील वेब इंटरफ़ेस में सत्र डेटा हो सकता है जिसे अक्सर और तेज़ी से एक्सेस करने की आवश्यकता होती है।

रेडिस को कुछ माईएसQL डेटा के लिए कैश के रूप में भी इस्तेमाल किया जा सकता है जिसे अक्सर एक्सेस किया जा रहा है (यानी: उपयोगकर्ता लॉग इन करते समय इसे लोड करें)।

मुझे लगता है कि आप सवाल पूछ रहे हैं गलत तरीके से चारों ओर, आप अपने आप से पूछना चाहिए जो एक जो की तुलना में आवेदन के लिए एक प्रणाली के लिए अनुकूल है, और अधिक एक आवेदन के लिए अनुकूल है बल्कि;)

+1

धन्यवाद - शायद मैं सवाल गलत तरीके से पूछ रहा हूं, लेकिन अगर मुझे समझ में नहीं आता कि जब MySQL से रेडिस का उपयोग करना अधिक उचित है, तो मैं किसी भी प्रश्न का उत्तर नहीं दे सकता! –

12

MySQL एक संबंधपरक डेटा है दुकान। यदि कॉन्फ़िगर किया गया है (उदा। innodb तालिकाओं का उपयोग करके), MySQL विश्वसनीय डेटा-स्टोर ACID लेन-देन की पेशकश करता है।

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

Redis has some very neat features जैसे सेट, सूचियां और क्रमबद्ध सूचियां।

These slides on Redis सूची आंकड़े एकत्रण और सत्र प्रबंधन उदाहरण के रूप में। एक उदाहरण के रूप में रेडिस के साथ लिखे गए क्लोन भी हैं, लेकिन इसका मतलब यह नहीं है कि ट्विटर का उपयोग रेडिस (twitter use भारी मेमकेच कैशिंग के साथ MySQL) का उपयोग नहीं करता है।

4

MySql -

1) संरचित डेटा 2) एसिड 3) भारी लेनदेन और लुकअप।

Redis -

1) गैर संरचित डेटा 2) सरल और त्वरित लुकअप। उदाहरण के लिए - एक सत्र के टोकन 3) इसे कैशिंग परत के लिए उपयोग करें।

संबंधित मुद्दे