रेडिस क्या है?
रेडिस एक प्रकार का इन-मेमोरी डेटाबेस है जिसमें विभिन्न प्रकार की डेटा संरचनाएं होती हैं जिनका आप उपयोग कर सकते हैं।
पसंद करें :
- कुंजी / मान संग्रहण
- सूचियां
- सेट
इसका आपके विशिष्ट SQL डेटाबेस से कोई लेना-देना नहीं है, जैसे Postgres।
Redis के उपयोग में शामिल हैं :
- कैशिंग
- लीडरबोर्ड
- आगंतुकों की गिनती
- तेज़ स्वतः पूर्ण सुझाव
- सक्रिय उपयोगकर्ता सत्रों पर नज़र रखना
- कार्य और संदेश कतार
आइए देखें कि आप अपने रूबी अनुप्रयोगों में रेडिस का उपयोग कैसे कर सकते हैं!
Redis को स्थानीय रूप से स्थापित करना
पहला:
आपको रेडिस सर्वर स्थापित करने की आवश्यकता है।
जैसे आप कोई अन्य डेटाबेस स्थापित करेंगे।
यदि आप उबंटू चला रहे हैं, तो आप apt install redis-server
. का उपयोग कर सकते हैं , मैक पर आप brew install redis
. का उपयोग कर सकते हैं &विंडोज 10 पर आपको "लिनक्स के लिए विंडोज सबसिस्टम" (निर्देशों के लिए क्लिक करें) की आवश्यकता होगी।
एक बार सर्वर के चालू और चलने के बाद आप redis-cli
. का उपयोग करने में सक्षम होंगे सर्वर से कनेक्ट करने के लिए।
नोट :आपको redis-server
चलाना पड़ सकता है इससे पहले कि आप सर्वर से कनेक्ट कर सकें, दूसरे टर्मिनल पर सर्वर शुरू करने के लिए।
अब आप रेडिस का उपयोग शुरू करने के लिए तैयार हैं!
रेडिस रत्न का उपयोग करना
आप redis-cli
. का उपयोग करके सीधे Redis के साथ इंटरैक्ट कर सकते हैं , लेकिन अगर आप रूबी से रेडिस के साथ काम करना चाहते हैं तो आपको एक रत्न का उपयोग करना चाहिए।
कुछ रत्न उपलब्ध हैं :
- ऑक्सब्लड
- रेडिक
- रेडिस-आरबी
लेकिन रेडिस डेवलपर्स द्वारा आधिकारिक तौर पर केवल एक की सिफारिश की जाती है, redis-rb
।
इंस्टॉल करें :
gem install redis
मणि स्थापित होने के साथ, आप अपने रेडिस सर्वर से जुड़ सकते हैं और इसके साथ काम करना शुरू कर सकते हैं।
आइए एक कुंजी जोड़कर शुरू करें, a
, 1
. के मान के साथ ।
यह रहा कोड :
require 'redis' redis = Redis.new(host: "localhost") redis.set("a", 1) # "OK" redis.get("a") # "1"
रूबी विधियों को रेडिस कमांड में मैप करने में यह रत्न अच्छा काम करता है, इसलिए यदि आप जानना चाहते हैं कि कौन से आदेश उपलब्ध हैं तो आप रेडिस दस्तावेज़ीकरण की जांच कर सकते हैं, या आप मणि दस्तावेज़ीकरण की जांच कर सकते हैं।
दस्तावेज़ीकरण के साथ काम करना
आप किसी विशिष्ट कमांड का नाम टाइप कर सकते हैं, या डेटा संरचना द्वारा खोजें ।
"समूह द्वारा फ़िल्टर करें" पर क्लिक करें और "स्ट्रिंग्स" चुनें, फिर इसका परीक्षण करने के लिए कोई एक कमांड चुनें।
उदाहरण के लिए, आप 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 में डेटा दृढ़ता
डिफ़ॉल्ट रूप से Redis आपके द्वारा नियमित डेटाबेस की तरह किए जाने वाले प्रत्येक ऑपरेशन को सहेजता नहीं है।
जब आप सर्वर बंद करते हैं तो यह केवल डेटा को डिस्क में सहेजता है।
या इन शर्तों के तहत :
- 15 मिनट के बाद, यदि 1 या अधिक कुंजियाँ बदली जाती हैं
- 5 मिनट के बाद, यदि 10 या अधिक कुंजियाँ बदली जाती हैं
- 1 मिनट के बाद, अगर 10,000 या अधिक कुंजियाँ बदली जाती हैं
यह एक dump.rdb
बनाता है वर्तमान निर्देशिका पर फ़ाइल।
यदि आप चाहते हैं कि रेडिस दृढ़ता एक SQL डेटाबेस की तरह व्यवहार करे, तो आप "केवल संलग्न करें मोड" को सक्षम कर सकते हैं, जो हर सेकंड के बाद परिवर्तनों को सहेजेगा।
रेडिस कॉन्फ़िगरेशन पर इस लाइन को जोड़कर (या बिना टिप्पणी किए) इस मोड को सक्षम करें:
appendonly yes
Redis को रेल कैश के रूप में उपयोग करना
रेल 5.2 के बाद से आप Redis को अपने कैशे स्टोर के रूप में उपयोग कर सकते हैं।
आपको केवल redis
की आवश्यकता है मणि और सर्वर।
इसे सक्षम करने के लिए :
# config/environments/production.rb Rails.application.configure do config.cache_store = :redis_cache_store, { url: "redis://localhost:6379/0" } end
तब रेल अपनी सभी कैशिंग जरूरतों के लिए रेडिस का उपयोग करेगी।
आप कैश में भी कुछ स्टोर कर सकते हैं :
Rails.cache.write("a", 1) # "OK" Rails.cache.read("a") # 1
रेल इस तरह दिखने वाले मानों को संग्रहीत करता है :
"\u0004\bo: ActiveSupport::Cache::Entry\t:\v@valuei\u0006:\r@version0:\u0010@created_atf\u00171555005228.7954454:\u0010@expires_in0"
इसका मतलब है कि आप किसी भी क्रमबद्ध रूबी ऑब्जेक्ट को स्टोर कर सकते हैं, जैसे ActiveRecord
. के परिणाम क्वेरी।
Redis सामान्य प्रश्न
“क्या मैं अपने Redis सर्वर की सभी कुंजियों को सूचीबद्ध कर सकता हूँ?”
हाँ, keys
. का उपयोग करके या scan
आदेश देता है, लेकिन इसकी अनुशंसा नहीं की जाती है क्योंकि यह बहुत धीमा है, विशेष रूप से जैसे-जैसे आपका डेटाबेस बढ़ता है।
“मुझे Redis का उपयोग कब करना चाहिए?”
केवल तभी जब यह आपके उपयोग के मामले में समझ में आता है। इसका मतलब है कि आप अपने कोड को तर्क करने में आसान बनाने के लिए Redis डेटा संरचनाओं का लाभ उठा सकते हैं।
आप रेडिस का उपयोग सिर्फ इसलिए नहीं करना चाहते क्योंकि यह अच्छा या लोकप्रिय है।
इसका उपयोग तब करें जब यह किसी समस्या को अन्य समाधानों की तुलना में बेहतर तरीके से हल करे।
“मैं Redis को तेज़ कैसे बना सकता हूँ?”
hiredis
को स्थापित करें redis-rb
के शीर्ष पर मणि अधिकतम प्रदर्शन के लिए।
सारांश
आपने रेडिस के बारे में सीखा है, जो एक तेज़ इन-मेमोरी डेटाबेस है जो कैशिंग, काउंटिंग और क्यू जैसी सही स्थितियों में बहुत मददगार हो सकता है।
अगर आपको यह लेख रोचक लगा हो तो कृपया इसे शेयर करें ताकि अधिक से अधिक लोग इसका आनंद उठा सकें।
पढ़ने के लिए धन्यवाद!