2013-07-30 12 views
5

में एक बड़ा हैशप बदलें, मेरे पास हैशैप है जो लगभग 1 जी डेटा स्टोर करता है वह महत्वपूर्ण मूल्य जोड़े की शर्तें है। यह हैशप हर 15 दिनों में बदलता है। इसे स्मृति में लोड किया जाएगा और वहां से उपयोग किया जाएगा।एएस

जब एक नया हैशप मेमोरी में लोड किया जाना है, तो स्मृति में हैशप को पहले से ही कई लेन-देन का उपयोग किया जाएगा। पुराने हैशप को एक्सेस करने वाले मौजूदा लेन-देन को प्रभावित किए बिना मैं पुराने हैशप को नए के साथ कैसे बदल सकता हूं। अगर स्मृति में हैशप को गर्म करने का कोई तरीका है?

+0

यदि आपकी समस्या हल हो जाती है, तो आपको [उत्तर स्वीकार करें]] (http://meta.stackexchange.com/q/5234/133242) –

उत्तर

3

मानचित्र के प्रत्यक्ष (हार्ड) संदर्भ को बेनकाब करने के बजाय AtomicReference<Map<Foo, Bar>> का उपयोग करें। मानचित्र के उपभोक्ता #get() का उपयोग करेंगे, और जब आप मानचित्र को स्वैप करने के लिए तैयार हों, तो आपका "आंतरिक" कोड #set() या #getAndSet() का उपयोग करेगा।

+0

या मानचित्र को अस्थिर चिह्नित करें ताकि उपयोगकर्ता के पास न हो अपना कोड बदलने के लिए। – assylias

+0

क्या ConcurrentHashMap मेरी समस्या हल करेगा? – Abhi

+0

नहीं, क्योंकि आपने कहा था कि आप पुराने हैशप तक पहुंचने वाले कर्लिंग लेनदेन को प्रभावित किए बिना हैशपैप _replace_ करना चाहते हैं। –

0

मैं कैशिंग टूल का उपयोग करने का सुझाव दूंगा जैसे डेटा आकार आपके जैसा बड़ा है। इस तरह आप अपनी आवश्यकता के अनुसार अलग-अलग आइटम या पूरे कैश को अमान्य कर सकते हैं।

+0

ओपी के सवाल के लिए यह ऑर्थोगोनल है। –

+0

हमें इन-मेमोरी समाधान से जाना है, क्योंकि नक्शा ऐसा कुछ है जिसे हम एक अलग समाधान – Abhi

1
  1. नक्शा
  2. मार्क नक्शे के लिए एक गेटर प्रदान करें निजी और अस्थिर
  3. जब नक्शे को अद्यतन करने, एक नया बना पॉप्युलेट और जब यह तैयार है, अपने निजी मानचित्र चर के लिए असाइन करें।

संदर्भ असाइनमेंट जावा में परमाणु हैं और अस्थिर दृश्यता सुनिश्चित करता है।

चेतावनियां:

  • आप अगर कुछ कोड पुराना मानचित्र यह पुराना डेटा का उपयोग करेंगे के लिए एक संदर्भ रखता है किसी चरण
  • पर स्मृति में दो नक्शे होगा। यदि यह एक मुद्दा है तो आप मानचित्र को पूरी तरह से छुपा सकते हैं और get(K key) प्रदान कर सकते हैं ताकि उपयोगकर्ता हमेशा नवीनतम मानचित्र तक पहुंच सकें।
+0

से क्रमबद्ध जावा ऑब्जेक्ट के रूप में प्राप्त कर रहे हैं, क्या ConcurrentHashMap इसे बिना अस्थिर के चिह्नित किए बिना मेरी समस्या का समाधान करेगा? – Abhi