2015-03-23 4 views
10

के अंदर रेडिस स्टोरिंग सूची मुझे लाल रंग में कुछ मशीन विवरण स्टोर करना होगा। मैं नीचे संरचनाहैश

server1 => {name => s1, cpu=>80} 
server2 => {name => s2, cpu=>40} 

मैं कुंजी सीपीयू के खिलाफ एक से अधिक मान संग्रहीत करना उपयोग करने के लिए योजना बना रहा हूँ कई अलग अलग मशीनों देखते हैं के रूप में। इसके अलावा मुझे cpu

के विरुद्ध मूल्यों की सूची में केवल अंतिम 10 मानों को बनाए रखने की आवश्यकता है 1) मैं हैश के अंदर कुंजी के विरुद्ध एक सूची कैसे संग्रहीत कर सकता हूं?

2) मैंने ltrim के बारे में पढ़ा। लेकिन यह एक कुंजी स्वीकार करता है। मैं सर्वर 1 के अंदर कुंजी सीपीयू के लिए ltrim कैसे कर सकता हूँ?

मैं जेडिस का उपयोग कर रहा हूं।

उत्तर

12

रेडिस डेटा संरचनाओं को अन्य डेटा संरचनाओं के अंदर घोंसला नहीं किया जा सकता है, इसलिए हैश के अंदर एक सूची संग्रहीत करना संभव नहीं है। इसके बजाय, अपने सर्वर के CPU मानों के लिए अलग-अलग कुंजियों का उपयोग करें (उदा। server1:cpu)।

2

Redisson ढांचे के साथ ऐसा करना संभव है। यह Redis ऑब्जेक्ट में रेडिस ऑब्जेक्ट में संदर्भित करने की अनुमति देता है हालांकि रेडिसन द्वारा नियंत्रित विशेष संदर्भ ऑब्जेक्ट्स।

तो अपने कार्य को मानचित्र के अंदर सूची का उपयोग कर हल किया जा सकता:

RMap<String, RList<Option>> settings = redisson.getMap("settings"); 

RList<Option> options1 = redisson.getList("settings_server1_option"); 
options1.add(new Option("name", "s1")); 
options1.add(new Option("cpu", "80")); 
settings.put("server1", options1); 

RList<Option> options2 = redisson.getList("settings_server2_option"); 
options2.add(new Option("name", "s2")); 
options2.add(new Option("cpu", "40")); 
settings.put("server2", options2); 

// read it 
RList<Option> options2Value = settings.get("server2"); 

या मानचित्र के अंदर मानचित्र का उपयोग कर:

RMap<String, RMap<String, String>> settings = redisson.getMap("settings"); 

RMap<String, String> options1 = redisson.getMap("settings_server1_option"); 
options1.put("name", "s1"); 
options1.put("cpu", "80"); 
settings.put("server1", options1); 

RMap<String, String> options2 = redisson.getMap("settings_server2_option"); 
options2.put("name", "s2"); 
options2.put("cpu", "40"); 
settings.put("server2", options1); 

// read it 
RMap<String, String> options2Value = settings.get("server2");