Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

रेडिस 'डंप' और 'रीस्टोर' (ऑफलाइन) का उपयोग कैसे करें?

डंप/पुनर्स्थापना आदेश वास्तव में कमांड लाइन से उपयोग करने के लिए डिज़ाइन नहीं किए गए हैं, क्योंकि क्रमबद्धता प्रारूप बाइनरी है (यह वही है जो आरडीबी डंप के लिए उपयोग किया जाता है)। यह इसे असुविधाजनक बनाता है क्योंकि शेल उन वर्णों की व्याख्या करता है (तब भी जब "प्रिंट करने योग्य" प्रारूप का उपयोग किया जाता है)।

यहाँ "मुद्रण योग्य" प्रारूप है:

$ redis-cli lpush test 1 2 3 4 5
(integer) 5
$ redis-cli dump test
"\n\x15\x15\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\xf6\x02\xf5\x02\xf4\x02\xf3\x02\xf2\xff\x06\x00\x1c\x8a\xda\x0e}\xcb\xe1."

"प्रिंट करने योग्य" प्रारूप का उपयोग -x विकल्प के लिए इनपुट के रूप में नहीं किया जा सकता है जो वास्तव में वास्तविक डेटा की अपेक्षा करता है। यह रेडिस-क्ली का भ्रामक व्यवहार है।

हालांकि, कच्चा प्रारूप प्राप्त करने का एक आसान तरीका है:

$ redis-cli --raw dump test | hexdump -C
00000000  0a 15 15 00 00 00 12 00  00 00 05 00 00 f6 02 f5  |................|
00000010  02 f4 02 f3 02 f2 ff 06  00 1c 8a da 0e 7d cb e1  |.............}..|
00000020  2e 0a                                             |..|

अब, -x पुनर्स्थापना में --raw डंप के परिणाम को सीधे पाइप करना संभव नहीं है, क्योंकि अंतिम वर्ण गलत है। --raw और प्रिंट करने योग्य डंप के आउटपुट की तुलना करें। आप देखेंगे कि --raw विकल्प अंत में एक अतिरिक्त \n जोड़ता है। कच्चा विकल्प 100% कच्चा नहीं है;-)

डेटा को -x विकल्प द्वारा संसाधित किए जाने से पहले इस अतिरिक्त वर्ण को निकालने की आवश्यकता है। अंत में, रिस्टोर में डंप के आउटपुट को पाइप करने के लिए सही कमांड (GNU/Linux सिस्टम पर) है:

$ redis-cli --raw dump test | head -c-1 | redis-cli -x restore test1 0
OK

यह सुंदर नहीं है। मुझे उम्मीद है कि ज्यादातर लोग ऐसे कार्यों को करने के लिए खोल के बजाय एक पर्ल/पायथन/रूबी स्क्रिप्ट पर भरोसा करेंगे।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. nginx lua redis कुकी सेटिंग नहीं कर रहा है

  2. नोडज अतुल्यकालिक अनुरोधों के साथ रेडिस में लूप के लिए

  3. रेडिस कनेक्शन/बफर-आकार की सीमा पार हो गई

  4. नोड रेडिस, चर ग्राहकों के बीच साझा किए जाते हैं?

  5. मल्टी-कोर सर्वर में क्लस्टर के साथ socket.io का उपयोग करने का अच्छा तरीका?