मुझे लगता है कि यह बहुत आसान है।
समाधान 1(अवर, अनुशंसित नहीं)
आपका तरीका ZSCAN MySet 0 MATCH Id:92 count 1
काम नहीं किया क्योंकि संग्रहित स्ट्रिंग "{\"Id\":\"92\"...
है नहीं "{\"Id:92\"...
. स्ट्रिंग को दूसरे प्रारूप में बदल दिया गया है। तो MATCH Id\":\"64
. का उपयोग करने का प्रयास करें या ऐसा कुछ रेडिस में जेसन क्रमबद्ध डेटा से मेल खाने के लिए। मैं json.net से परिचित नहीं हूं, इसलिए वास्तविक स्ट्रिंग आपको खोजने के लिए छोड़ देती है।
वैसे, मैं आपसे पूछना चाहता हूँ ZSCAN MySet 0 MATCH Id:92 count 1
एक कर्सर वापस करें? मुझे संदेह है कि आपने ZSCAN
. का उपयोग किया है गलत तरीके से।
समाधान 2(बेहतर, दृढ़ता से अनुशंसित)
ZSCAN
अच्छा है जब आपका सॉर्ट किया गया सेट बड़ा नहीं है और आप जानते हैं कि रेडिस के लुआ लेनदेन द्वारा नेटवर्क राउंडट्रिप समय को कैसे बचाया जाए। यह अभी भी "आईडी द्वारा देखें" ऑपरेशन ओ (एन) बनाता है। इसलिए, एक बेहतर उपाय यह है कि आप अपने डेटा मॉडल को निम्न तरीके से बदलें:
क्रमबद्ध सेट से बदलें
# Score Value
0 1443476076 {"Id":"92","Ref":"7ADT","DTime":1443476076,"ATime":1443901554,"ExTime":0,"SPName":"7ADT33CFSAU6","StPName":"7ADT33CFSAU6"}
1 1443482969 {"Id":"11","Ref":"DAJT","DTime":1443482969,"ATime":1443901326,"ExTime":0,"SPName":"DAJTJTT4T02O","StPName":"DAJTJTT4T02O"}
करने के लिए
# Score Value
0 1443476076 Id:92
1 1443482969 Id:11
बाकी विस्तृत डेटा को हैश टाइप कीज़ के दूसरे सेट में ले जाएँ:
# Key field-value field-value ...
0 Id:92 Ref-7ADT DTime-1443476076 ...
1 Id:11 Ref-7ADT DTime-1443476076 ...
फिर, आप hgetall id:92
. करके आईडी के आधार पर पता लगाते हैं . तिथि के अनुसार श्रेणीबद्ध क्वेरी के लिए, आपको ZRANGEBYSCORE sortedset mindate maxdate
करने की आवश्यकता है फिर hgetall
हर आईडी एक के बाद एक। बेहतर होगा कि आप इन आदेशों को एक में लपेटने के लिए लुआ का उपयोग करें और यह अभी भी बहुत तेज़ होगा!
NoSql डेटाबेस में डेटा को ऊपर की तरह बेमानी तरीके से व्यवस्थित करने की आवश्यकता है। इससे कुछ सामान्य ऑपरेशन में एक से अधिक कमांड और राउंडट्रिप शामिल हो सकते हैं, लेकिन इसे रेडिस के लुआ फीचर से निपटा जा सकता है। मैं रेडिस के लुआ फीचर की पुरजोर अनुशंसा करता हूं, क्योंकि यह कमांड को एक नेटवर्क राउंडट्रिप में लपेटता है, जो सभी रेडिस-सर्वर साइड पर निष्पादित होते हैं और परमाणु और सुपर फास्ट होते हैं!
अगर आप कुछ नहीं जानते हैं तो जवाब दें