मेमकेच बनाम मेमकेड?


76

मैं ज्ञापन का उपयोग करना चाहता हूं

http://www.danga.com/memcached/

मैंने इसके माध्यम से स्थापित किया है yum install memcached

लेकिन अब मुझे PHP से कनेक्ट करने की आवश्यकता है, और एक एक्सटेंशन है जिसे मेमाचे और एक मेम्केड नाम दिया गया है? अर्घ

http://us3.php.net/manual/en/book.memcache.php
http://us3.php.net/manual/en/book.memcached.php

क्या कोई मुझे यहाँ सही दिशा में इंगित कर सकता है .. जो काम करने जा रहा है?

इसके अलावा, क्या मुझे स्थानीय होने के बावजूद काम करने के लिए कोई पोर्ट खोलने की जरूरत है? इसे चलाने के बाद, मैं टेलनेट 127.0.0.1 11211 की कोशिश करता हूं और मुझे कनेक्शन से इनकार कर दिया जाता है।


24
यदि आप अभी इस प्रश्न को देख रहे हैं, तो कृपया ध्यान रखें कि स्वीकृत उत्तर गलत है । केवल नाम पर आधारित समाधान चुनना खतरनाक है, खासकर जब बेहतर नाम वाला एक बदतर प्रोजेक्ट है। कृपया अधिक जानकारी के लिए अन्य उत्तरों को देखें।
टायलरल

@thanksyo कृपया आपके द्वारा चेक किए गए उत्तर को अनचेक करें। यह सिर्फ देर से आने वाले लोगों को भ्रमित करेगा। इस बीच, मैंने गलत उत्तर को अस्वीकार कर दिया और सुझाव दिया कि जब तक धन्यवाद उसे अनियंत्रित नहीं करता है, तब तक वही करें।
२०:०२ पर joedevon

जवाबों:


24

संक्षिप्त उत्तर: या तो एक वह है जिसे आप ढूंढ रहे हैं, लेकिन मेरी पहली पसंद मेमेकैच (पहली बार सूचीबद्ध), शुद्ध रूप से नामकरण के सही उपयोग के आधार पर होगी।

अब यहाँ है कि कैसे मैं उस निष्कर्ष पर आया:

यहां नामकरण सम्मेलनों (अपरिचित लोगों के लिए) में एक त्वरित पृष्ठभूमि है, जो प्रश्न पूछने वाले द्वारा हताशा की व्याख्या करता है: कई * निक्स अनुप्रयोगों के लिए, जो टुकड़ा बैकएंड काम करता है उसे "डेमॉन" कहा जाता है (विंडोज में इस सेवा को सोचें) भूमि), जबकि इंटरफ़ेस या क्लाइंट एप्लिकेशन वही है जो आप डेमन को नियंत्रित या एक्सेस करने के लिए उपयोग करते हैं। डेमन को अक्सर क्लाइंट के रूप में उसी नाम दिया जाता है, जिसके साथ "डी" अक्षर जुड़ा होता है। उदाहरण के लिए "इमैप" एक क्लाइंट होगा जो "इमैप्ड" डेमॉन से जुड़ता है।

यह नामकरण सम्मेलन स्पष्ट रूप से मेमकेच द्वारा पालन किया जा रहा है जब आप मेमकाच मॉड्यूल का परिचय पढ़ते हैं (इस अंश में मेमेक और मेमकेच के बीच अंतर को नोटिस करें):

Memcache मॉड्यूल मेम्केच्ड, अत्यधिक प्रभावी कैशिंग डेमॉन को आसान प्रक्रियात्मक और वस्तु उन्मुख इंटरफ़ेस प्रदान करता है, जिसे विशेष रूप से गतिशील वेब अनुप्रयोगों में डेटाबेस लोड को कम करने के लिए डिज़ाइन किया गया था।

Memcache मॉड्यूल एक सत्र हैंडलर (memcache) भी प्रदान करता है।

मेमकेड के बारे में अधिक जानकारी » http://www.danga.com/memcached/ पर देखी जा सकती है ।

हताशा यहाँ PHP एक्सटेंशन जो बुरी तरह से नामित किया गया था के लेखक के कारण होता है memcached , क्योंकि यह वास्तविक डेमॉन कहा जाता है के रूप में समान नाम साझा memcached । यह भी ध्यान दें कि मेमकेच्ड (php मॉड्यूल) के लिए परिचय में , यह libmemcached का उल्लेख करता है , जो कि साझा पुस्तकालय (या एपीआई) है जो मॉड्यूल द्वारा मेमक्श्ड डेमॉन तक पहुंचने के लिए उपयोग किया जाता है:

मेमकास्ट एक उच्च-प्रदर्शन, वितरित मेमोरी ऑब्जेक्ट कैशिंग सिस्टम, प्रकृति में सामान्य है, लेकिन डेटाबेस लोड को कम करके गतिशील वेब अनुप्रयोगों को गति देने में उपयोग करने का इरादा है।

यह एक्सटेंशन मेमेकैड सर्वर के साथ संचार के लिए एपीआई प्रदान करने के लिए libmemcached पुस्तकालय का उपयोग करता है। यह एक सत्र हैंडलर (मेमकास्टेड) ​​भी प्रदान करता है।

Libmemcached के बारे में जानकारी » http://tangent.org/552/libmemcached.html पर देखी जा सकती है ।

सारांश में, दोनों कार्यात्मक रूप से समान हैं, लेकिन उनके पास बस अलग-अलग लेखक हैं, और एक को दूसरे की तुलना में अधिक उपयुक्त रूप से नामित किया गया है।


70
क्या परियोजना का नाम वास्तव में एक को दूसरे पर लागू करने का उचित कारण है?
डेविड पस्ले

4
डेविड: बिल्कुल नहीं ... लेकिन यह निश्चित रूप से मेरे परीक्षण में अंतिम तक एक विशेष कार्यान्वयन को छोड़ने का एक कारण है, जिससे अन्य (ओं) को प्रभावी ढंग से वरीयता दी जा रही है। मैं सबसे अधिक संभावना अभी भी उपलब्ध सभी कार्यान्वयन की कोशिश करूंगा, लेकिन लेखक द्वारा सॉफ्टवेयर के विवरणों में तकनीकी खामियां मुझे आश्चर्यचकित करती हैं कि सॉफ्टवेयर में तकनीकी खामियां क्या हो सकती हैं। मैंने आपकी टिप्पणी को पढ़ा, हालाँकि, वास्तविक सॉफ़्टवेयर के बारे में, इसलिए मैंने आपको आपके उत्तर के लिए भी उत्थान दिया। :-)
जेसिका मैकिननोन

4
मैंने कभी नहीं सोचा था कि "डी" को बहिष्कृत करने का मतलब है लेकिन क्रिया कैश के पिछले कृदंत का मतलब है। इसके अलावा, आप नए इंटरफ़ेस को "मेमकेच" नाम नहीं दे सकते क्योंकि उस नाम के साथ पहले से ही एक था।
GetFree

9
बग की मात्रा और विस्तार सक्रिय है या नहीं , समस्याग्रस्त d के बारे में गुदा होने की तुलना में बहुत अधिक महत्वपूर्ण है। सच में, आपको एक एक्सटेंशन के परीक्षण के बारे में सोचना भी नहीं चाहिए क्योंकि ऐसा कुछ है, यह पूरी तरह से बल्ले से है
Fake51

12
एर्म, दोनों कार्यात्मक रूप से समान नहीं हैं : memcachedउदाहरण के लिए कैस टोकन का समर्थन memcacheकरता है , नहीं। यदि आपको उन लोगों की आवश्यकता है, तो आप जानते हैं कि कौन से (नामांकित या नहीं) को चुनना है।
11

56

आप शायद PHP क्लाइंट तुलना देखना चाहते हैं ।

लघु संस्करण: वे दोनों काम करेंगे, और ज्यादातर मामलों के लिए या तो एक ठीक काम करेगा।

अन्य मुद्दे के बारे में: हां, आपको करने में सक्षम होना चाहिए telnet 127.0.0.1 11211। बहुत कम फायरवॉल लोकलहोस्ट को खुद से संवाद करने से रोकते हैं। यदि आप कनेक्ट नहीं कर पा रहे हैं, तो सत्यापित करें कि मेमकेड वास्तव में काम कर रहा है ps auxwww | grep memcached, जो आपको कमांड-लाइन तर्क भी दिखाएगा जो मेमकेड शुरू करने के लिए उपयोग किया जाता है। एक तर्क होना चाहिए -p 11211या दूसरा पोर्ट नंबर होना चाहिए । man memcachedसभी संभावित तर्कों के अर्थ के लिए देखें ।


2
कुछ समस्या निवारण चरणों को जोड़ने के लिए अद्यतन करें।
जेसिका मैकिनॉन

यह वास्तव में स्पष्ट जवाब है।
danidacar

@ नहीं, विंडोज किसके बराबर है ps auxwww | grep memcached?
पचेरियर

1
@Pacerier: पर एक नजर डालें superuser.com/questions/415360/... । प्रोसेस एक्सप्लोरर एक रनिंग प्रोसेस को खोजने और इसके कमांड-लाइन तर्कों को देखने का सबसे आसान तरीका है।
नट

@Pacerier जाँचता है कि सर्वर प्रक्रिया चल रही है या नहीं और यह कैसे देखा गया है।
जैसन

27

जैसा कि नैट के लिंक से पता चलता है, दोनों सरल उपयोग के लिए पूरी तरह से काम करते हैं। हालाँकि, मेम्केड अधिक सुविधाओं का समर्थन करता है जो आपको मेम्केड से अधिकतम प्रदर्शन प्राप्त करने की अनुमति देता है। बाइनरी प्रोटोकॉल क्लाइंट और सर्वर के बीच भेजे जाने वाले डेटा की मात्रा को कम कर देता है। मल्टीगेट और मल्टीसेट आपको एक ही समय में कई आइटम प्राप्त / सेट करने की अनुमति देते हैं। यदि आप पा रहे हैं कि आपको मेमॉचेस से अधिक ऑम्फ की आवश्यकता है, तो मेम्केड बेहतर मॉड्यूल है। Libmemcached के उपयोग से पता चलता है कि लाइब्रेरी संभवतः PHP केवल संस्करण की तुलना में अधिक अनुकूलित है।

मेमकेच, मेकचे की तुलना में अधिक हालिया मॉड्यूल है, जो केवल 8 महीने पहले जारी किया गया था। यदि आपको पीएचपी के पुराने संस्करण को लक्षित करने की आवश्यकता है, तो आप केवल वास्तव में मेमकेच का उपयोग कर सकते हैं।


महान व्याख्या!
जॉन

21

पुराने, बुग्जियर को कहा जाता है php-memcacheक्योंकि यह सबसे उपयुक्त नाम लगता है। डिग में लोगों द्वारा स्वतंत्र रूप से विकसित किए गए नए, बेहतर संस्करण को इसके बजाय php-memcachedअसंतोष के नाम पर रखा गया था ।

जो लोग आपको सलाह देंगे कि आप केवल नाम की शुद्धता पर आधारित एक दूसरे को चुनें, वास्तव में तकनीकी सलाह देने वाला कोई व्यवसाय नहीं है।


6

हाल ही में php-memcache का उपयोग करने के बाद, मुझे आपको php-memcached को इंगित करना होगा।

यहाँ मेरे सिर के ऊपर से कारणों की एक जोड़ी है ..

1) कोई getErrorCode () या समतुल्य विधि नहीं है, इसलिए यदि FALSE प्राप्त होता है, तो आपको पता नहीं चलेगा कि क्या क्योंकि मेमस्कैच में संग्रहित मूल्य गलत है, या क्या किसी प्रकार का कोई मुद्दा था।

2) सुसंगत हैशिंग के लिए इसका हैशिंग एल्गोरिथ्म अन्य कार्यान्वयनों से भिन्न प्रतीत होता है, जैसे कि लिबरमेड के बंद कई क्लाइंट लाइब्रेरीज़। इसका मतलब यह है कि यदि आप एक ही मेम्चे के क्लस्टर का उपयोग कई भाषाओं के साथ करना चाहते हैं, तो संभवतः आपके पास ऐसे मुद्दे होंगे जहां आप PHP क्लाइंट के साथ एक मूल्य स्टोर करेंगे, और अन्य क्लाइंट इसे नहीं पाएंगे।


3

आज के रूप में दोनों के मुद्दे हैं। PECL / मेम्केचे पुराने और विश्वसनीय हैं, कुछ अपवादों के साथ जहां यह दिनांकित है। पीईसीएल / मेमकाटेड 1.x सबसे अच्छा बीटा है। कुछ फ़ंक्शन संख्यात्मक कुंजियों के साथ सौदा नहीं करते हैं, यह लगातार कनेक्शन का उपयोग करते समय कनेक्शन लीक करता है। कुछ (सभी?) GitHub में तय किए जा रहे हैं और कुछ बिंदु पर 2.x में जारी किए जाएंगे, लेकिन आज नहीं। अधिक विस्तृत समीक्षा के लिए http://brian.moonspot.net/php-memcached-issues देखें


पीईसीएल / मेमकाटेड 1.x अब स्थिर है; पीईसीएल / मेमकाच 2.x सीमित है; पीईसीएल / मेमेचे 3.x अत्यधिक अस्थिर है।
aredridel

2

मैं एक पुस्तक "एक्सपर्ट PHP और MySQL" पर काम कर रहा हूँ। मैंने मतभेदों के बारे में एक ही बात लिखी। मैंने जो सिफारिश की थी वह PECL / मेमकाटेड थी। # 1 - यह एक पूर्ण विशेषताओं वाली सी-लाइब्रेरी # 2 के आसपास घूमता है - यह हाल ही में बनाए रखा गया है। # 3 - अधिक सुविधाएँ। PECL / मेमकेच के लिए कोई असमानता नहीं।


0

मैंने Drupal 6 और php-pecl-memcached के साथ कुछ बहुत गंभीर मुद्दे लिए हैं, जिसमें प्रतिक्रिया समय में प्रति कॉल 5ms तक देरी हो रही थी और php-pecl-memcached में परिवर्तन से पहले 5x अधिक कॉल बनाने के लिए एक विशेष साइट का कारण होगा । Php-pecl-memcache को बदलने से सभी समस्याएं ठीक हो गईं; विलंबता और अतिरिक्त कॉल।

यह उत्तर पूरी तरह से Drupal 6 और संभवतः Drupal 7 का उपयोग करने वालों की मदद करने के लिए है।


-3
  • मेमकेच मेमक्लेड का एक क्लाइंट (सर्वर) है
  • libmemcached भी मेमेकटेड का क्लाइंट है

और मेमकेड के लिए अन्य ग्राहक हैं, http://code.google.com/p/memcached/wiki/Clients देखें

वेब से कट और पेस्ट करें:

http://www.php.net/manual/en/intro.memcache.php

  Memcache module provides handy procedural and object oriented 
  interface to memcached, highly effective caching daemon, which was 
  especially designed to decrease database load in dynamic web applications.
The Memcache module also provides a session handler (memcache).
More information about memcached can be found at » www.memcached.org 

http://www.php.net/manual/en/intro.memcached.php

   » memcached (http://www_memcached_org/) is a high-performance, distributed 
  memory object caching system, generic in nature, but intended for use in 
  speeding up dynamic web applications by alleviating database load.
  This extension uses libmemcached library to provide API for communicating with
  memcached servers. It also provides a session handler (memcached).
  Information about libmemcached can be found at 
   » tangent.org/552/libmemcached.html

http://pecl.php.net/package/memcached "PHP एक्सटेंशन को libmemcached पुस्तकालय के माध्यम से मेमकेच के साथ हस्तक्षेप करने के लिए" यह एक्सटेंशन libcemcached पुस्तकालय का उपयोग करता है जो मेमेकैक्ड सर्वर के साथ संचार करने के लिए एपीआई प्रदान करता है। https://github.com/andreiz/php-memcached

http://pecl.php.net/package/memcache "मेमकाटेड एक्सटेंशन" मेमेकैड एक कैशिंग डेमन है जो विशेष रूप से गतिशील वेब अनुप्रयोगों के लिए डिज़ाइन किया गया है ताकि मेमोरी में ऑब्जेक्ट्स को स्टोर करके डेटाबेस लोड को कम किया जा सके। यह एक्सटेंशन आपको आसान OO और प्रक्रियात्मक इंटरफेस के माध्यम से मेमकेड के साथ काम करने की अनुमति देता है।

http://code.google.com/p/memcached/wiki/PHPClientComparison

                        pecl/memcache      pecl/memcached
  First Release Date      2004-06-08         2009-01-29 (beta)
  Actively Developed?     Yes                    Yes
  External Dependency     None              libmemcached

6
यह लंबे समय से जवाब देने के लिए पोस्टर के लिए चीजों को स्पष्ट करने के करीब भी नहीं आता है। पोस्टर पहले से ही पता है कि कई ग्राहक हैं। उन्हें सूचीबद्ध करना, और वैकल्पिक नामों का प्रस्ताव करना, सही को चुनना आसान नहीं है।
मार्टिज़न हेमेल्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.