2012-09-05 10 views
15

मैं जेडिस को जावा क्लाइंट के रूप में रेडिस सर्वर से कनेक्ट करने के लिए उपयोग कर रहा हूं।क्या जेडिस जावा POJO प्राप्त/सेट कर सकते हैं?

प्रश्न 1: ऐसा लगता है कि ऑब्जेक्ट < प्राप्त करने/सेट करने का कोई तरीका नहीं है? Serializable बढ़ाता है>? सभी मान स्ट्रिंग या बाइट [] होना चाहिए?

अन्य ग्राहक जैसे "जेआरडीआईएस" और स्पिममेकैच (memcached सर्वर के लिए) कर सकते हैं।

प्रश्न 2: यदि मैं शारडेडजेडिस का उपयोग करता हूं, तो यह ऑथ/पासवर्ड सेट नहीं कर सकता है? जबकि जेडिस कक्षा (ऑथ (स्ट्रिंग पासवर्ड) का उपयोग कर सकते हैं)।

उत्तर

14

प्रश्न के बारे में 1: जेडीएस पीओजेओ को संभाल नहीं पाएगा। आपको स्ट्रिंग या बाइट [] पर क्रमबद्ध करना चाहिए और ऐसा करने के लिए जेडीस का उपयोग करना चाहिए, हालांकि मैं आपके जावा ऑब्जेक्ट्स को क्रमबद्ध करने की अनुशंसा नहीं करूंगा, क्योंकि आप सभी रेडिस कूल फीचर्स का उपयोग नहीं कर पाएंगे। ऑब्जेक्ट-हैश मैपर जैसे JOhm जैसे कुछ का उपयोग करने के लिए एक अलग दृष्टिकोण होगा।

प्रश्न 2 के बारे में: ShardedJedis केवल एक ही कुंजी पर चलने वाले आदेशों का समर्थन करेगा। यह परमाणुता की गारंटी है। यदि आप किसी विशिष्ट रेडिस पर एक विशिष्ट कमांड चलाने के लिए चाहते हैं तो आपको shardedJedis.getShard('someky') का उपयोग करना चाहिए जो Jedis इंस्टेंस का उपयोग कर सकता है जिसका आप उपयोग कर सकते हैं। इसे संभालने का एक और तरीका, अनुशंसित एक, JedisShardInfo उदाहरणों में अपना पासवर्ड निर्दिष्ट करना है। आप tests में इसका उपयोग और उदाहरण देख सकते हैं।

+5

@xertorthio: जॉम प्रोजेक्ट के लिए लिंक साझा करने के लिए धन्यवाद, कुछ दिलचस्प लग रहा है! हालांकि, जब आप उल्लेख करते हैं, "मैं आपके जावा ऑब्जेक्ट्स को क्रमबद्ध करने की अनुशंसा नहीं करूंगा, क्योंकि आप सभी रेडिस कूल फीचर्स का उपयोग नहीं कर पाएंगे" जो अन्य रेडिस कूल फीचर्स का जिक्र कर रहे हैं? –

+0

@ निशांत मुझे लगता है कि उनका मतलब डेटा में परमाणु परिवर्तन करने के लिए आईएनसीआर जैसी चीजें थीं। –

+0

ऐसा लगता है कि जॉन परियोजना सक्रिय नहीं है। यहां उस परियोजना का एक सक्रिय कांटा है: [johm] (https://github.com/agrison/johm) – WorM

3

उत्तर 1 सवाल करने के लिए:

Redisson (जावा के लिए Redis आधारित ढांचे) POJO वस्तुओं के साथ काम कर सकते हैं। और आपको प्रत्येक बार ऑब्जेक्ट को क्रमबद्ध/deserialize करने की आवश्यकता नहीं है और कनेक्शन (अधिग्रहण/रिलीज) के साथ काम करते हैं। यह सब रेडिसन द्वारा किया जाता है।

यहाँ उदाहरण है:

RBucket<AnyObject> bucket = redisson.getBucket("anyObject"); 
// set an object 
bucket.set(new AnyObject()); 
// get an object 
AnyObject myObject = bucket.get(); 

या आप LiveObjectService उपयोग कर सकते हैं।

Redisson Jackson JSON, Avro, Smile, CBOR, MsgPack, Kryo, FST, LZ4, Snappy और JDK Serialization जैसे कई लोकप्रिय कोडेक का समर्थन करता है।

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