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

क्या कोई रेडिस सेटबिट कमांड की व्याख्या कर सकता है?

जैसा कि इसके नाम का तात्पर्य है, SETBIT आपको बिट ऑपरेशन करने की अनुमति देता है - अर्थात् दिए गए बिट को 0 या 1 पर सेट करें, किसी दिए गए बिट ऑफ़सेट पर, किसी दिए गए कुंजी के लिए।

यह समझना महत्वपूर्ण है कि परिणाम में हमेशा केवल प्रिंट करने योग्य वर्ण शामिल नहीं होते हैं। यही कारण है कि Redis एक कस्टम फ़ंक्शन का उपयोग करता है sdscatrepr सीएलआई आउटपुट को प्रारूपित करने के लिए:

<ब्लॉकक्वॉट>

एसडीएस स्ट्रिंग "एस" में एक एस्केप्ड स्ट्रिंग प्रतिनिधित्व जोड़ें जहां सभी गैर-मुद्रण योग्य वर्ण (इसप्रिंट () के साथ परीक्षण किए गए) को "\ n \ r \ a ..." या "\ x" के रूप में एस्केप में बदल दिया जाता है। ।

कहा जा रहा है कि आइए एक साधारण उदाहरण से शुरू करते हैं। यदि आप हेक्स संख्या 0x7F . पर विचार करते हैं (=127) 8-बिट पर इसका द्विआधारी प्रतिनिधित्व है:

pos: 0 1 2 3 4 5 6 7
bit: 0 1 1 1 1 1 1 1
     ^             ^
     |             |
     MSB           LSB

आप आमतौर पर SETBIT . का उपयोग कर सकते हैं इस मान को स्टोर करने के लिए, यह ध्यान में रखते हुए कि ऑफ़सेट 0 है MSB और ऑफ़सेट 7 LSB है :

redis> SETBIT myval 0 0
(integer) 0
redis> SETBIT myval 1 1
(integer) 0
redis> SETBIT myval 2 1
(integer) 0
redis> SETBIT myval 3 1
(integer) 0
redis> SETBIT myval 4 1
(integer) 0
redis> SETBIT myval 5 1
(integer) 0
redis> SETBIT myval 6 1
(integer) 0
redis> SETBIT myval 7 1
(integer) 0

निरीक्षण करने के लिए अपना मूल्य प्राप्त करें यदि:

redis> GET myval
"\x7f"

अब मल्टी बाइट्स के साथ क्या होता है? मान लें कि आप 0x52 स्टोर करना चाहते हैं (=82) जो वर्ण R . से मेल खाती है एएससीआईआई में। 8-बिट प्रतिनिधित्व 01010010 . है बिट पोजीशन के साथ (8, 9, ..., 15) चूंकि हम चाहते हैं कि इसे पहले मान के ठीक बाद संग्रहीत किया जाए:

redis> SETBIT myval 8 0
(integer) 0
redis> SETBIT myval 9 1
(integer) 0
redis> SETBIT myval 10 0
(integer) 0
redis> SETBIT myval 11 1
(integer) 0
redis> SETBIT myval 12 0
(integer) 0
redis> SETBIT myval 13 0
(integer) 0
redis> SETBIT myval 14 1
(integer) 0
redis> SETBIT myval 15 0
(integer) 0

और आपको मिलता है:

redis> GET myval
"\x7fR"

यहां रेडिस सीएलआई प्रिंट करने योग्य वर्ण R का प्रतिनिधित्व करने में सक्षम है ।

<ब्लॉकक्वॉट>

जब मैं स्ट्रिंग मान 1 और 7 को "mykey" में संग्रहीत करता हूं

यह 01000001 . से मेल खाती है जो 65 और 0x41 . के बराबर है हेक्स में। यह ASCII वर्ण A . से मेल खाती है . ऐसा करना:

redis> SETBIT mykey 1 1
(integer) 0
redis> SETBIT mykey 7 1
(integer) 0

देता है:

redis> GET mykey
"A"
<ब्लॉकक्वॉट>

रेडिस के अंदर गेटबिट कैसे काम करता है?

यह बस दिए गए स्थान पर बिट का मान लौटाता है। यहां:

redis> GETBIT mykey 1
(integer) 1

लेकिन बिट 0 सेट नहीं किया गया है (यह डिफ़ॉल्ट रूप से 0 है) इस प्रकार:

redis> GETBIT mykey 0
(integer) 0


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis::CommandError:ERR क्लाइंट ने AUTH भेजा, लेकिन कोई पासवर्ड सेट नहीं किया गया

  2. एक रेल ऐप पर एक हैश को रेडिस में सहेजा जा रहा है

  3. आप tcp कनेक्शन पर आने वाले सभी बाइट्स को कैसे पढ़ते हैं?

  4. जेडिस क्लाइंट के रेडिस टेम्पलेट में एक ही कॉल में एकाधिक सूची मान कैसे प्राप्त करें

  5. स्प्रिंग बूट फ्रेमवर्क पर JedisConnectionFactory बेस के टाइमआउट को कैसे कॉन्फ़िगर करें