Redis की गति और लचीलापन इसे डेवलपर्स के लिए एक अत्यंत शक्तिशाली उपकरण बनाता है और इसका उपयोग विभिन्न तरीकों से किया जा सकता है। हालांकि Redis को अक्सर की-वैल्यू स्टोर के रूप में संदर्भित किया जाता है, इसे डेटा स्ट्रक्चर सर्वर के रूप में बेहतर वर्णित किया जाता है, क्योंकि यह 5 अलग-अलग डेटा स्ट्रक्चर प्रकारों का भी समर्थन करता है, अर्थात्:
- स्ट्रिंग्स
- हैशेज
- लिस्ट्स
- सेट्स
- सॉर्टेड सेट्स
प्रत्येक स्ट्रक्चर प्रकार में साझा कमांड के साथ-साथ कुछ कमांड होते हैं जो किसी विशेष स्ट्रक्चर प्रकार के लिए विशिष्ट होते हैं।
यह परिचय Redis का उपयोग करने की मूल बातें और विभिन्न डेटा संरचनाओं का अवलोकन कवर करेगा। हम कुछ अधिक बुनियादी कमांड को कवर करेंगे, हालांकि ध्यान रखें कि लेखन के समय Redis में 160 से अधिक कमांड हैं और आप redis.io/commands पर उत्कृष्ट दस्तावेज पा सकते हैं।
Redis शुरू करना
ObjectRocket for Redis द्वारा प्रदान किए गए इंस्टेंस का उपयोग करें या Redis को स्थानीय रूप से इंस्टॉल करें।
स्थानीय रूप से इंस्टॉल करने के लिए, कोड डाउनलोड करें, निकालें और संकलित करें:
$ wget https://download.redis.io/releases/redis-2.8.17.tar.gz
$ tar xzf redis-2.8.17.tar.gz
$ cd redis-2.8.17
$ make
स्थानीय इंस्टेंस शुरू करें:
$ src/redis-server
Redis का उपयोग करना
अब आप बिल्ट-इन क्लाइंट का उपयोग करके Redis के साथ इंटरैक्ट करने के लिए तैयार हैं। ObjectRocket for Redis इंस्टेंस के लिए होस्टनाम, पोर्ट और पासवर्ड के साथ redis-cli शुरू करें:
$ redis-cli -h my-host -p 1234 -a mypassword
यदि आप स्थानीय इंस्टेंस का उपयोग कर रहे हैं, तो होस्ट लोकलहोस्ट है, डिफ़ॉल्ट पोर्ट 6379 है, और डिफ़ॉल्ट रूप से कोई पासवर्ड नहीं है।
$ redis-cli
GET और SET
सबसे सरल स्तर पर, Redis को की-वैल्यू स्टोर के रूप में वर्णित किया जा सकता है। कमांड SET foo bar जारी करके आप foo का मान bar पर सेट करते हैं। उदाहरण के लिए, आपके द्वारा अभी शुरू किए गए redis-cli से निम्न कमांड जारी करें:
redis> SET foo bar
OK
अब GET कमांड के साथ foo का मान पढ़ें।
redis> GET foo
"bar"
EXPIRE और TTL
आप EXPIRE कमांड का उपयोग करके कुंजियों को एक दी गई समय अवधि में समाप्त होने के लिए सेट कर सकते हैं। TTL कुंजी के समाप्त होने से पहले शेष समय की रिपोर्ट करता है।
redis> SET foo bar
OK
redis> EXPIRE foo 120
(integer) 1
redis> TTL foo
(integer) 113
लिस्ट्स
Redis की विशिष्ट विशेषताओं में से एक यह है कि एक कुंजी के मान डेटा संरचनाएं हो सकती हैं, केवल मान नहीं।
लिस्ट बनाने के लिए LPUSH या RPUSH का उपयोग करें। यदि कोई लिस्ट पहले से मौजूद है, तो LPUSH दिए गए मान को लिस्ट की शुरुआत में जोड़ देगा और RPUSH इसे अंत में जोड़ देगा।
redis> LPUSH cities "San Francisco"
(integer) 1
redis> RPUSH cities "Austin"
(integer) 2
redis> LRANGE cities 0 -1
1. "San Francisco"
2. "Austin"
redis> SORT cities alpha
1. "Austin"
2. "San Francisco"
redis> LPOP cities
"San Francisco"
redis> LRANGE cities 0 -1
1. "Austin"
SORT कमांड ALPHA तर्क के साथ लेक्सिकोग्राफिक रूप से आरोही क्रम में लिस्ट को सॉर्ट करता है। अवरोही क्रम में सॉर्ट करने के लिए, SORT कमांड में DESC तर्क जोड़ें।
RPOP कमांड लिस्ट के अंत से एक एलिमेंट पॉप करता है। LPOP लिस्ट की शुरुआत से एक एलिमेंट पॉप करता है।
सेट्स
सेट्स लिस्ट्स के समान हैं, सिवाय इसके कि प्रत्येक एलिमेंट केवल एक बार हो सकता है। नीचे दिए गए उदाहरण में हम US राज्यों का एक छोटा सेट बनाते हैं। SADD कमांड सेट में एक आइटम जोड़ता है, जब तक कि आइटम पहले से सेट में मौजूद न हो। यदि आइटम मौजूद नहीं है, तो इसे जोड़ा जाता है और 1 वापस किया जाता है; अन्यथा, 0 वापस किया जाता है। SMEMBERS सेट में सभी आइटम लौटाता है। SCARD सेट के एलिमेंट्स की संख्या लौटाता है। SREM लिस्ट से एक आइटम हटाता है।
redis> SADD states "Vermont"
(integer) 1
redis> SMEMBERS states
1. "Vermont"
redis> SADD states "Texas"
(integer) 1
redis> SCARD states
(integer) 2
redis> SADD states "Vermont"
(integer) 0
redis> SMEMBERS states
1. "Vermont"
2. "Texas"
redis> SADD states "California"
(integer) 1
redis> SMEMBERS states
1. "Vermont"
2. "Texas"
3. "California"
redis> SREM states "California"
(integer) 1
redis> SMEMBERS states
1. "Vermont"
2. "Texas"
हैशेज
हैशेज का उपयोग करके, आप प्रत्येक कुंजी में फील्ड्स को स्ट्रिंग मान निर्दिष्ट और मैप कर सकते हैं। कुछ फील्ड्स वाला एक हैश इस तरह से संग्रहीत होता है जो बहुत कम जगह लेता है, इसलिए आप लाखों ऑब्जेक्ट्स को एक छोटे Redis इंस्टेंस में स्टोर कर सकते हैं। नीचे दिए गए उदाहरण में, user:1 का नाम HSET कमांड का उपयोग करके "john racker" पर सेट किया गया है। HGET कमांड का उपयोग user के नाम मान को प्राप्त करने के लिए किया जाता है। HGETALL निर्दिष्ट कुंजी से संबंधित सभी कुंजियों और मानों को लौटाता है।
redis> HSET user:1 name "john racker"
(integer) 1
redis> HGET user:1 name
"joe racker"
redis> HSET user:1 company "objectrocket"
(integer) 1
redis> HGET user:1 company
"ObjectRocket"
redis> HSET user:1 city "austin"
(integer) 1
redis> HGET user:1 city
"austin"
redis> HGETALL user:1
1. "name"
2. "john racker"
3. "company"
4. "objectrocket"
5. "city"
6. "austin"
सॉर्टेड सेट्स
सॉर्टेड सेट्स सेट्स के समान हैं जिसमें वे स्ट्रिंग्स के नॉन-रिपीटिंग कलेक्शन हैं, हालांकि प्रत्येक सदस्य एक स्कोर से जुड़ा होता है। सॉर्टेड सेट्स अपने स्कोर द्वारा आरोही क्रम में सॉर्टेड होते हैं। वही एलिमेंट केवल एक बार मौजूद होता है, कोई दोहराए गए एलिमेंट्स अनुमति नहीं है, हालांकि स्कोर दोहराए जा सकते हैं।
इस उदाहरण में हम 10/23/2014 तक इंग्लिश प्रीमियर लीग में शीर्ष 5 टीमों के पॉइंट्स टोटल जोड़ेंगे:
redis> ZADD EPL 22 "chelsea"
(integer) 1
redis> ZADD EPL 17 "man city"
(integer) 1
redis> ZADD EPL 16 "southampton"
(integer) 1
redis> ZADD EPL 13 "liverpool"
(integer) 1
redis> ZADD EPL 13 "west ham"
(integer) 1
redis> ZRANK EPL "chelsea"
(integer) 3
redis> ZRANK EPL "liverpool"
(integer) 0
redis> ZRANK EPL "arsenal"
(nil)
अब हम ZRANGE का उपयोग करके टीमों को पॉइंट्स टोटल के आधार पर रैंक करेंगे:
redis> ZRANGE EPL 0 -1
1) "liverpool"
2) "west ham"
3) "southampton"
4) "man city"
5) "chelsea"
redis> ZRANGE EPL 2 3
1) "southampton"
2) "man city"
याद रखें, सेट्स आरोही क्रम में सॉर्टेड होते हैं, इसलिए टीमों को उनके पॉइंट्स टोटल के आधार पर रैंक देखने के लिए हमें ZREVRANGE का उपयोग करने की आवश्यकता है
redis> ZREVRANGE EPL 0 -1
1) "chelsea"
2) "man city"
3) "southampton"
4) "west ham"
5) "liverpool"
redis> ZREVRANGE EPL 0 -1 WITHSCORES
1) "chelsea"
2) "22"
3) "man city"
4) "17"
5) "southampton"
6) "16"
7) "west ham"
8) "13"
9) "liverpool"
10) "13"
अब, साउथेम्प्टन एक गेम खेलता है और जीतता है, 3 अंक प्राप्त करता है। हम स्कोर को बढ़ाने के लिए ZINCRBY का उपयोग करते हैं, और यह देखने के लिए ZREVRANGE का उपयोग करते हैं कि साउथेम्प्टन लीग में दूसरे स्थान पर कैसे चला गया है। हम साउथेम्प्टन की रैंक देखने के लिए ZREVRANK का भी उपयोग कर सकते हैं। नोट: रैंक 0-आधारित है, जिसका अर्थ है कि उच्चतम स्कोर वाले सदस्य (चेल्सी) की रैंक 0 है।
redis> ZINCRBY EPL 3 "southampton"
"19"
redis> ZREVRANGE EPL 0 -1 WITHSCORES
1) "chelsea"
2) "22"
3) "southampton"
4) "19"
5) "man city"
6) "17"
7) "west ham"
8) "13"
9) "liverpool"
10) "13"
redis> ZREVRANK EPL "southampton"
(integer) 1
redis> ZREVRANGEBYSCORE EPL 25 (15
1) "chelsea"
2) "southampton"
3) "man city"
आने वाले हफ्तों में हम Redis और इस अद्भुत बहुमुखी डेवलपर टूल के उपयोग के मामलों में गहराई से गोता लगाएंगे। यदि आपके पास Redis चलाने के बारे में कोई प्रश्न हैं या आप हमें बताना चाहते हैं कि आप अपने एप्लिकेशन स्टैक में Redis का उपयोग कैसे कर रहे हैं तो हमें एक लाइन ड्रॉप करें।