2012-05-21 18 views
9

एपीआई मैं उपयोग कर रहा हूँ, spymemcached, मूल रूप सेकैसे कनेक्शन पूल जावा में memcached करने के लिए (spymemcached)

MemcachedClient memc = new MemCachedClient(new InetSocketAddress("host", port)); 

यह वास्तव में मुझे एक connect() या isConnected() समारोह नहीं देता है देता है। एपीआई DefaultConnectionFactory प्रदान करता है लेकिन पहले कोड को देखो, ऐसा लगता है कि यह एक कनेक्शन पूल का प्रबंधन नहीं करता है। क्या किसी को यह पता है कि spymemcached में या किसी अन्य जावा memcached लाइब्रेरी में ऐसा कैसे करें?

अधिक आम तौर पर - कनेक्शन के नुकसान के खिलाफ मेरे आवेदन को सहन करने के लिए सबसे अधिक "नैतिक" तरीका क्या है?

उत्तर

14

जब आप MemcachedClient कन्स्ट्रक्टर को कॉल करते हैं तो यह स्वचालित रूप से आपके memcached सर्वर से कनेक्ट होता है। connect() या isConnected() विधि नहीं है। यदि आप Spymemcached के साथ कनेक्शन खो देते हैं तो यह आपके लिए पुनः कनेक्ट करने का प्रयास करेगा। इसके अलावा, DefaultConnectionFactory का उपयोग विशेष कनेक्शन विशेषताओं (जैसे हैशिंग विधि और विफलता मोड) निर्दिष्ट करने के लिए किया जाना है। यदि आप कनेक्शन फैक्ट्री का उपयोग करना चाहते हैं तो आपको MemcachedClient कन्स्ट्रक्टर का उपयोग करने की आवश्यकता है जो ConnectionFactory और List<InetSocketAddress> लेता है।

स्पिममेकैच एक एकल आईओ थ्रेड का उपयोग करता है, लेकिन एक बहुप्रचारित क्लाइंट की तरह कार्य करता है। उदाहरण के लिए एक थ्रेड के साथ, आप प्रति सेकेंड 50k ऑप्स कर सकते हैं। यदि आप एक थ्रेड पूल बनाना चाहते हैं तो आपको इसे अपने उपयोगकर्ता एप्लिकेशन में करना होगा।

अधिक आम तौर पर - कनेक्शन के नुकसान के खिलाफ मेरे आवेदन को सहिष्णु बनाने का सबसे अधिक "नैतिक" तरीका क्या है?

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

+0

मुझे जो कुछ पता होना चाहिए। मैं उम्मीद कर रहा था कि पुन: कनेक्शन को समाहित किया गया था। बहुत धन्यवाद। – djechlin

0

आप शुरुआत में ऑब्जेक्ट पूल बना सकते हैं। फिर सेट करने, हटाने या ऑपरेशन करने के दौरान आप पूल से वस्तुओं को उधार ले सकते हैं। एक बार जब आप अपने कन्स्ट्रक्टर का आह्वान करते हैं तो MemcachedClient स्वचालित रूप से सर्वर से कनेक्ट हो जाएगा।

0

कुछ लोग कनेक्शन को पूल करने के लिए डीबीसीपी का उपयोग करते हैं। आप 3levelmemcache प्रोजेक्ट पर देख सकते हैं github इसमें पूलिंग है।