Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

Ruby में Redis मास्टर करना: एक व्यावहारिक गाइड

Redis को स्थानीय रूप से इंस्टॉल करना

सबसे पहले:

आपको Redis सर्वर इंस्टॉल करने की आवश्यकता है।

ठीक वैसे ही जैसे आप किसी अन्य डेटाबेस को इंस्टॉल करेंगे।

यदि आप Ubuntu चला रहे हैं, तो आप apt install redis-server उपयोग कर सकते हैं, Mac पर आप brew install redis उपयोग कर सकते हैं और Windows 10 पर आपको "Windows Subsystem for Linux" की आवश्यकता होगी (निर्देशों के लिए क्लिक करें)।

एक बार सर्वर चालू और चल रहा है तो आप सर्वर से कनेक्ट करने के लिए redis-cli का उपयोग कर पाएंगे।

नोट: इससे पहले कि आप इससे कनेक्ट कर सकें, आपको दूसरे टर्मिनल पर redis-server चलाना पड़ सकता है सर्वर शुरू करने के लिए।

अब आप Redis का उपयोग शुरू करने के लिए तैयार हैं!

Redis Gems का उपयोग करना

आप redis-cli का उपयोग करके सीधे Redis के साथ इंटरैक्ट कर सकते हैं, लेकिन यदि आप Ruby से Redis के साथ काम करना चाहते हैं तो आपको एक gem का उपयोग करना चाहिए।

कुछ gems उपलब्ध हैं:

  • oxblood
  • redic
  • redis-rb

लेकिन केवल एक Redis डेवलपर्स द्वारा आधिकारिक तौर पर अनुशंसित है, redis-rb।

इसे इंस्टॉल करें:

 gem install redis 

gem इंस्टॉल होने के साथ, आप अपने Redis सर्वर से कनेक्ट कर सकते हैं और इसके साथ काम करना शुरू कर सकते हैं।

आइए एक की, a, को 1 के मान के साथ जोड़कर शुरू करते हैं।

यहाँ कोड है:

 require 'redis'
redis = Redis.new(host: "localhost")
redis.set("a", 1) # "OK"
redis.get("a") # "1" 

यह gem Redis कमांड्स को Ruby मेथड्स पर मैप करने का अच्छा काम करता है, इसलिए यदि आप जानना चाहते हैं कि कौन सी कमांड्स उपलब्ध हैं तो आप Redis डॉक्यूमेंटेशन चेक कर सकते हैं, या आप gem डॉक्यूमेंटेशन चेक कर सकते हैं।

डॉक्यूमेंटेशन के साथ काम करना

आप एक विशिष्ट कमांड का नाम टाइप कर सकते हैं, या डेटा स्ट्रक्चर द्वारा खोज सकते हैं।

"ग्रुप द्वारा फ़िल्टर करें" पर क्लिक करें और "Strings" चुनें, फिर इसे आज़माने के लिए कमांड्स में से एक चुनें।

उदाहरण के लिए, आप incr कमांड का उपयोग कर सकते हैं:

 redis.incr("a") # "2" 

या आप setex के साथ एक ऑटो-एक्सपायरिंग की सेट कर सकते हैं:

 redis.setex("bacon", 10, 100) 

जहां दूसरा आर्गुमेंट इस की के एक्सपायर होने से पहले के सेकंड्स हैं, और अंतिम आर्गुमेंट इस की के लिए मान है।

उदाहरण:

 redis.get("bacon") # "100" 

10 सेकंड के बाद...

 redis.get("bacon") # nil 

अन्य कमांड्स को एक्सप्लोर करने और आज़माने में मज़ा लें!

Redis में सॉर्टेड सेट्स का उपयोग कैसे करें

Redis साधारण की/वैल्यू स्टोरेज तक सीमित नहीं है।

यह कुछ शक्तिशाली डेटा स्ट्रक्चर्स प्रदान करता है।

जैसे सॉर्टेड सेट।

यह आपको यूनिक आइटम्स की एक सूची बनाने की अनुमति देता है जो एक दिए गए मान द्वारा सॉर्टेड हैं। मान को Redis डॉक्यूमेंटेशन में "स्कोर" कहा जाता है।

आप इस सेट में शीर्ष N आइटम्स प्राप्त करने के लिए क्वेरी कर सकते हैं।

तो यह एक लीडरबोर्ड के लिए एकदम सही है!

उदाहरण:

 redis.zadd("popular_fruit", 10, "apple") # true
redis.zadd("popular_fruit", 20, "banana") # true
redis.zadd("popular_fruit", 30, "orange") # true 

अब जब हमारे पास हमारा सेट है, तो हम शीर्ष आइटम के लिए क्वेरी कर सकते हैं:

 r.zrevrange("popular_fruit", 0, 0) # ["orange"] 

यह कमांड कह रही है:

"उच्चतम रैंक (0) से शुरू करके, मुझे शीर्ष आइटम दें।"

यदि आप सब कुछ चाहते हैं, क्रम में:

 r.zrevrange("popular_fruit", 0, -1) # ["orange", "banana", "apple"] 

"zrevrange" में "rev" भाग देखें, इसका मतलब रिवर्स है और यह आपको आइटम्स को अवरोही क्रम में देगा।

यदि आप "zrange" उपयोग करते हैं तो आपको आइटम्स आरोही क्रम में मिलेंगे।

सॉर्टेड सेट्स लीडरबोर्ड से आगे जाते हैं!

एक और चीज़ जो आप कर सकते हैं वह है ZRANGEBYLEX कमांड के साथ एक तेज़ ऑटोकंप्लीट इंजन बनाना।

अधिक सेट ऑपरेशन्स के लिए कृपया डॉक्यूमेंटेशन पढ़ें।

कीज़, वैल्यूज़ और नेमस्पेसिंग को समझना

कोई कॉलम नहीं हैं, कोई टेबल्स नहीं हैं, सब कुछ एक प्लेन नेमस्पेस है।

आप अपने डेटा को कैसे व्यवस्थित कर सकते हैं?

आप की नाम का उपयोग कर सकते हैं।

एक सामान्य कन्वेंशन है जेनेरिक नाम और उस नाम के विशिष्ट भाग को अलग करने के लिए कोलन (:) का उपयोग करना।

यहाँ एक उदाहरण है:

 redis.set("fruit:1", "apple") # OK
redis.set("fruit:2", "banana") # OK 

इस कन्वेंशन के बारे में Redis (सॉफ्टवेयर) के लिए कुछ खास नहीं है, एक कोलन के साथ की बिना कोलन की से अलग नहीं है, लेकिन आपके लिए (एक मित्रवत Ruby डेवलपर) यह आपके डेटा को व्यवस्थित करने में मदद करता है।

Redis में डेटा पर्सिस्टेंस

डिफ़ॉल्ट रूप से Redis आपके द्वारा किए गए हर एक ऑपरेशन को एक नियमित डेटाबेस की तरह सेव नहीं करता।

यह केवल डेटा को डिस्क पर सेव करता है जब आप सर्वर को रोकते हैं।

या इन शर्तों के तहत:

  • 15 मिनट के बाद, यदि 1 या अधिक कीज़ बदलीं
  • 5 मिनट के बाद, यदि 10 या अधिक कीज़ बदलीं
  • 1 मिनट के बाद, यदि 10,000 या अधिक कीज़ बदलीं

यह वर्तमान डायरेक्टरी पर एक dump.rdb फाइल बनाता है।

यदि आप चाहें कि Redis पर्सिस्टेंस SQL डेटाबेस की तरह अधिक व्यवहार करे, तो आप "अपेंड ओनली मोड" सक्षम कर सकते हैं, जो हर सेकंड परिवर्तनों को सेव करेगा।

Redis कॉन्फिगरेशन पर इस लाइन को जोड़कर (या अनकमेंट करके) इस मोड को सक्षम करें:

 appendonly yes 

Redis को Rails कैश के रूप में उपयोग करना

Rails 5.2 से आप Redis को अपने कैश स्टोर के रूप में उपयोग कर सकते हैं।

आपको केवल redis gem और सर्वर की आवश्यकता है।

इसे सक्षम करने के लिए:

 # config/environments/production.rb
Rails.application.configure do
  config.cache_store = :redis_cache_store, { url: "redis://localhost:6379/0" }
end 

तब Rails अपनी सभी कैशिंग आवश्यकताओं के लिए Redis का उपयोग करेगा।

आप कैश में कुछ स्टोर भी कर सकते हैं:

 Rails.cache.write("a", 1) # "OK"
Rails.cache.read("a") # 1 

Rails वैल्यूज को इस तरह स्टोर करता है:

 "\u0004\bo: ActiveSupport::Cache::Entry\t:\v@valuei\u0006:\r@version0:\u0010@created_atf\u00171555005228.7954454:\u0010@expires_in0" 

इसका मतलब है कि आप किसी भी सीरियलाइज़ेबल Ruby ऑब्जेक्ट को स्टोर कर सकते हैं, जैसे ActiveRecord क्वेरी के परिणाम।

Redis F.A.Q

"क्या मैं अपने Redis सर्वर में सभी कीज़ सूचीबद्ध कर सकता हूँ?"

हाँ, keys या scan कमांड्स का उपयोग करके, लेकिन इसकी अनुशंसा नहीं की जाती क्योंकि यह बहुत धीमा है, विशेष रूप से जैसे-जैसे आपका डेटाबेस बढ़ता है।

"मुझे Redis कब उपयोग करना चाहिए?"

केवल जब यह आपके उपयोग के मामले के लिए मायने रखता है। इसका मतलब है कि आप अपने कोड को तर्क करना आसान बनाने के लिए Redis डेटा स्ट्रक्चर्स का लाभ उठा सकते हैं।

आप Redis का उपयोग सिर्फ इसलिए नहीं करना चाहते क्योंकि यह कूल या लोकप्रिय है।

इसका उपयोग तब करें जब यह अन्य समाधानों की तुलना में किसी समस्या को बेहतर हल करता है।

"मैं Redis को कैसे तेज़ बना सकता हूँ?"

redis-rb के शीर्ष पर hiredis gem इंस्टॉल करें अधिकतम प्रदर्शन के लिए।

सारांश

आपने Redis के बारे में सीखा, एक तेज़ इन-मेमोरी डेटाबेस जो सही स्थितियों में बहुत मददगार हो सकता है, जैसे कैशिंग, काउंटिंग और क्यूज़।

यदि आपने इस आर्टिकल को दिलचस्प पाया तो कृपया इसे शेयर करें ताकि अधिक लोग इसका आनंद ले सकें।

पढ़ने के लिए धन्यवाद!


  1. Ruby के grep मेथड में महारत: कोड उदाहरणों के साथ एक व्यावहारिक गाइड Ruby के grep मेथड में महारत: कोड उदाहरणों के साथ एक व्यावहारिक गाइड

    आइए grep मेथड के बारे में बात करते हैं। यह मेथड आपके लिए क्या कर सकता है? आप enumerable ऑब्जेक्ट्स को फ़िल्टर करने के लिए Grep का उपयोग कर सकते हैं, जैसे Arrays और Ranges। "लेकिन select पहले से ही ऐसा करता है!" हाँ, लेकिन grep अलग तरीके से काम करता है और अलग परिणाम उत्पन्न करता है। आइए कुछ

  1. Ruby के Map मेथड में महारत: उदाहरणों के साथ एक व्यावहारिक गाइड Ruby के Map मेथड में महारत: उदाहरणों के साथ एक व्यावहारिक गाइड

    Map एक Ruby मेथड है जिसका उपयोग आप Arrays, Hashes और Ranges के साथ कर सकते हैं। map का मुख्य उपयोग डेटा को ट्रांसफॉर्म करना है। उदाहरण के लिए: स्ट्रिंग्स की एक सरणी दिए जाने पर, आप हर स्ट्रिंग पर जा सकते हैं और हर कैरेक्टर को UPPERCASE बना सकते हैं। या यदि आपके पास User ऑब्जेक्ट्स की एक सूची है... आ

  1. रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स रूबी स्ट्रक्ट्स और OpenStruct में महारत: कुशल वैल्यू ऑब्जेक्ट्स

    रूबी में स्ट्रक्ट क्या है? एक स्ट्रक्ट एक बिल्ट-इन रूबी क्लास है, इसका उपयोग वैल्यू ऑब्जेक्ट्स उत्पन्न करने वाली नई क्लासेस बनाने के लिए किया जाता है। एक वैल्यू ऑब्जेक्ट संबंधित विशेषताओं को एक साथ संग्रहीत करने के लिए उपयोग किया जाता है। यहां एक उदाहरण है: दो निर्देशांकों (x और y) के साथ एक Point।