2010-03-06 14 views
7

वर्तमान में memcached में ActiveRecord ऑब्जेक्ट्स को संग्रहीत करने में दो समस्याएं हैं।memcached में ActiveRecord ऑब्जेक्ट को स्टोर करने का सबसे अच्छा तरीका क्या है?

  1. अपरिभाषित कक्षा/मॉड्यूल समस्या (Google search)। जो मैंने पढ़ा है, उससे अभी भी एक बग है कि किसी के लिए कोई वास्तविक अच्छा समाधान नहीं है। Cache_fu प्लगइन शायद इसके लिए सबसे अच्छा समाधान है, इस त्रुटि को पकड़ने का प्रयास करने वाले ब्लॉक में अपनी पुनर्प्राप्ति कॉल को लपेटकर, संदेश को पार्स करता है और अपरिभाषित वर्ग/मॉड्यूल को लोड करने का प्रयास करता है।

  2. कुख्यात एलएच टिकट # 1339 (LH Ticket)। यह बग तभी होगा जब आपके पास cache_classes FALSE (विकास, परीक्षण) पर सेट हो।

सप्ताह के लिए googling के बाद, मैं अभी भी ऊपर सूचीबद्ध 2 मुद्दों से निपटने के बिना memcached में एआर उदाहरणों के भंडारण के लिए एक अच्छी तकनीक नहीं मिली है।

विचार मैंने अभी तक प्रयास नहीं किया है, उदाहरण के रूप में स्ट्रिंग्स के रूप में गुणों को हटा रहा है (बस एआर को उनके प्रकार कास्टिंग करने से पहले डीबी से कैसे प्राप्त होता है), उनको संग्रहीत करने और फिर कैश से पुनर्प्राप्ति पर संग्रहीत करने के लिए, किसी भी तरह इन मूल्यों का उपयोग कर एआर ऑब्जेक्ट को तुरंत चालू करें। क्या यह संभव है? यदि हां, तो ऐसा करने का सबसे अच्छा तरीका क्या है?

मैं बस रेलवे डेवलपर्स ने इस समस्या से निपटने के तरीकों की तलाश में हूं।

उत्तर

3

हमारी परियोजनाओं में हम ऑब्जेक्ट को XML के रूप में संग्रहीत करते हैं।

cache.write(user.cache_key, user.to_xml) # write to cache 
User.new(Hash.from_xml(cache.read(cache_key))) # reach from cache xml 

serializing/de-serializing एक्सएमएल के लिए कुछ अतिरिक्त लागत नहीं आती। लेकिन इसने हमें गैर रूबी ऐप्स के बीच कैश साझा करने में सक्षम बनाया है।

+0

मुझे यह विचार पसंद है, यह –

+0

का प्रयास करेगा, मैं शायद इस बिंदु पर JSON के साथ जाऊंगा। किसी भी मामले में, मुझे कुछ भी संग्रहित पाया गया है लेकिन मेमकैड में स्ट्रिंग्स, इंट्स और एरेज़ पागलपन है। –

+0

जब आप #new_record का जवाब देने के लिए कैश से पुनर्प्राप्त एआर ऑब्जेक्ट्स पर निर्भर करते हैं तो यह बहुत अच्छा काम नहीं करता है? और # आईडी जैसे वे डीबी से लोड हो जाएंगे। यह विधि सिर्फ एक नई सहेजी गई एआर ऑब्जेक्ट बनाता है जो वास्तविक गुणों के साथ कुछ गुणों को साझा करने के लिए होती है। –

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

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