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

Redis के साथ इन-मेमोरी कैशिंग में महारत हासिल करें: तेज़, विश्वसनीय डेटा पुनर्प्राप्ति

Redis के साथ इन-मेमोरी कैशिंग में महारत हासिल करें: तेज़, विश्वसनीय डेटा पुनर्प्राप्ति

जब आप एक वेब ऐप या API बना रहे होते हैं जिसे जल्दी प्रतिक्रिया देने की आवश्यकता होती है, तो कैशिंग अक्सर गुप्त चटनी होती है।

इसके बिना, आपका सर्वर बार-बार वही डेटा लाने में समय बर्बाद कर सकता है - एक डेटाबेस से, एक थर्ड-पार्टी API से, या एक धीमे स्टोरेज सिस्टम से।

लेकिन जब आप उस डेटा को मेमोरी में स्टोर करते हैं, तो वही जानकारी मिलीसेकंड में सर्व की जा सकती है। यहीं Redis आता है।

Redis एक तेज़, लचीला टूल है जो आपके डेटा को RAM में स्टोर करता है और आपको इसे तुरंत पुनर्प्राप्त करने देता है। चाहे आप एक डैशबोर्ड बना रहे हों, सोशल मीडिया पोस्ट को स्वचालित कर रहे हों, या यूज़र सेशन प्रबंधित कर रहे हों, Redis आपके सिस्टम को तेज़, अधिक कुशल और स्केल करने में आसान बना सकता है।

इस लेख में, आप सीखेंगे कि इन-मेमोरी कैशिंग कैसे काम करती है और क्यों Redis कई डेवलपर्स के लिए एक पसंदीदा विकल्प है।

विषय सूची

  • इन-मेमोरी कैशिंग क्या है?

  • Redis क्या है?

  • Redis के साथ कैसे काम करें

    • Redis इंस्टॉलेशन

    • Redis डेटा प्रकार

    • Python के साथ Redis

  • वास्तविक जीवन के उपयोग के मामले

  • निष्कर्ष

इन-मेमोरी कैशिंग क्या है?

इन-मेमोरी कैशिंग सिस्टम की RAM में डेटा स्टोर करने का एक तरीका है बजाय इसके कि हर बार जब इसकी आवश्यकता हो तो इसे डेटाबेस या बाहरी स्रोत से लाया जाए।

चूंकि RAM डिस्क स्टोरेज की तुलना में अविश्वसनीय रूप से तेज़ है, आप कैश्ड डेटा को लगभग तुरंत एक्सेस कर सकते हैं। यह दृष्टिकोण उस जानकारी के लिए एकदम सही है जो बहुत बार नहीं बदलती, जैसे API प्रतिक्रियाएं, यूज़र प्रोफाइल, या रेंडर्ड HTML पेज।

हर बार वही क्वेरी या API कॉल चलाने के बजाय, आपका ऐप पहले कैश की जांच करता है। यदि डेटा वहां है, तो इसका तुरंत उपयोग किया जाता है। यदि नहीं, तो आप इसे स्रोत से लाते हैं, इसे कैश में सेव करते हैं, और फिर इसे लौटाते हैं।

यह तकनीक आपके बैकएंड पर लोड को कम करती है, प्रतिक्रिया समय में सुधार करती है, और भारी ट्रैफिक के तहत आपके ऐप के प्रदर्शन को नाटकीय रूप से सुधार सकती है।

Redis क्या है?

Redis एक ओपन-सोर्स, इन-मेमोरी डेटा स्टोर है जिसका उपयोग डेवलपर्स रीयल-टाइम में डेटा को कैश और प्रबंधित करने के लिए करते हैं।

पारंपरिक डेटाबेस के विपरीत, Redis सब कुछ मेमोरी में स्टोर करता है, जो डेटा पुनर्प्राप्ति को अविश्वसनीय रूप से तेज़ बनाता है। लेकिन Redis केवल एक साधारण की-वैल्यू स्टोर नहीं है। यह स्ट्रिंग्स और सूचियों से लेकर सेट्स, हैश और सॉर्टेड सेट्स तक डेटा प्रकारों की एक विस्तृत श्रृंखला प्रदान करता है।

Redis पब/सब मैसेजिंग, स्ट्रीम्स, और जियोस्पेशियल क्वेरी जैसे अधिक उन्नत कार्यों को संभालने में भी सक्षम है। अपनी शक्ति के बावजूद, Redis हल्का है और शुरू करना आसान है।

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

Redis के साथ कैसे काम करें

Redis इंस्टॉलेशन

Redis को चालू करना और चलाना आश्चर्यजनक रूप से सरल है। आप डॉक्यूमेंटेशन में अपने ऑपरेटिंग सिस्टम के आधार पर इंस्टॉलेशन निर्देश पा सकते हैं।

यह सुनिश्चित करने के लिए कि Redis काम कर रहा है, चलाएं:

redis-cli ping # "PONG" के साथ प्रतिक्रिया देनी चाहिए

Redis डेटा प्रकार

Redis आपको कई बिल्ट-इन प्रकार देता है जो आपको डेटा को लचीले तरीकों से स्टोर और प्रबंधित करने देते हैं।

स्ट्रिंग्स: सरल की ↔ वैल्यू पेयर।

SET username "Emily"
GET username

सूचियाँ: क्रमबद्ध संग्रह जो क्यू और टाइमलाइन के लिए बढ़िया हैं।

LPUSH tasks "task1"
RPUSH tasks "task2"
LRANGE tasks 0 -1

हैश: JSON ऑब्जेक्ट की तरह, यूज़र प्रोफाइल के लिए बढ़िया।

HSET user:1 name "Alice"
HSET user:1 email "alice@example.com"
HGETALL user:1

सेट्स: अनऑर्डर्ड संग्रह, टैग या यूनिक आइटम के लिए आदर्श।

SADD tags "python"
SADD tags "redis"
SMEMBERS tags

सॉर्टेड सेट्स: स्कोर के साथ सेट्स - लीडरबोर्ड के लिए उपयोगी।

ZADD leaderboard 100 "Bob"
ZADD leaderboard 200 "Carol"
ZRANGE leaderboard 0 -1 WITHSCORES

Redis बिटमैप्स, हाइपरलॉगलॉग्स, स्ट्रीम्स, जियोस्पेशियल इंडेक्स का भी समर्थन करता है, और डेटा संरचनाओं के लिए अपने समर्थन का विस्तार करता रहता है।

Python के साथ Redis

यदि आप Python में काम कर रहे हैं, तो Redis का उपयोग करना उतना ही आसान है। redis Python लाइब्रेरी को pip install redis का उपयोग करके इंस्टॉल करने के बाद, आप अपने Redis सर्वर से कनेक्ट कर सकते हैं और तुरंत कुंजियों को सेट और प्राप्त करना शुरू कर सकते हैं।

यहां Redis के साथ काम करने के लिए कुछ सरल Python कोड है:

import redis
# डिफ़ॉल्ट पोर्ट 6379 पर स्थानीय Redis सर्वर से कनेक्ट करें और डेटाबेस 0 का उपयोग करें
r = redis.Redis(host='localhost', port=6379, db=0)
# --- बेसिक स्ट्रिंग उदाहरण ---
# 'welcome' नामक एक कुंजी को स्ट्रिंग वैल्यू के साथ सेट करें
r.set('welcome', 'Hello, Redis!')
# 'welcome' कुंजी का मान प्राप्त करें
# आउटपुट एक बाइट स्ट्रिंग होगी: b'Hello, Redis!'
print(r.get('welcome'))
# --- हैश उदाहरण (Python dict की तरह) ---
# 'user:1' कुंजी के तहत एक Redis हैश बनाएं
# यह हैश एक यूज़र के लिए 'name' और 'email' फ़ील्ड स्टोर करता है
r.hset('user:1', mapping={
    'name': 'Alice',
    'email': 'alice@example.com'
})
# हैश में सभी फ़ील्ड और वैल्यू को बाइट स्ट्रिंग्स के डिक्शनरी के रूप में प्राप्त करें
# आउटपुट: {b'name': b'Alice', b'email': b'alice@example.com'}
print(r.hgetall('user:1'))
# --- सूची उदाहरण (क्यू या स्टैक की तरह काम करता है) ---
# 'Task A' को 'tasks' सूची के बाईं ओर पुश करें
r.lpush('tasks', 'Task A')
# 'Task B' को 'tasks' सूची के बाईं ओर पुश करें (यह पहला आइटम बन जाता है)
r.lpush('tasks', 'Task B')
# 'tasks' सूची से सभी तत्व प्राप्त करें (इंडेक्स 0 से -1 तक, यानी पूरी सूची)
# आउटपुट: [b'Task B', b'Task A']
print(r.lrange('tasks', 0, -1))

आप यूज़र का सत्र डेटा स्टोर कर सकते हैं, बैकग्राउंड टास्क को क्यू कर सकते हैं, या रेंडर्ड HTML पेज भी कैश कर सकते हैं। Redis कमांड तेज़ और एटॉमिक हैं, जिसका अर्थ है कि आपको हाई-ट्रैफिक वातावरण में डेटा टकराव या असंगति के बारे में चिंता करने की आवश्यकता नहीं है।

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

आप कुंजियों पर टाइम-टू-लाइव (TTL) सेट कर सकते हैं, ताकि Redis उन्हें स्वचालित रूप से हटा दे

SET session:1234 "some data" EX 3600 # 1 घंटे में समाप्त होता है

Redis पर्सिस्टेंस का भी समर्थन करता है, इसलिए भले ही यह एक इन-मेमोरी स्टोर है, आपका डेटा रीबूट से बच सकता है।

Redis छोटे ऐप्स तक सीमित नहीं है। यह रेप्लिकेशन, क्लस्टरिंग, और Sentinel के माध्यम से आसानी से स्केल होता है।

रेप्लिकेशन आपको अपने डेटा की रीड-ओनली कॉपी बनाने की अनुमति देता है, जो लोड को वितरित करने में मदद करता है। क्लस्टरिंग आपके डेटा को टुकड़ों में तोड़ता है और उन्हें कई सर्वरों पर फैलाता है। और Sentinel ऑटोमैटिक फेलओवर को संभालता है ताकि आपका सिस्टम चलता रहे भले ही एक सर्वर डाउन हो जाए।

वास्तविक जीवन के उपयोग के मामले

Redis के सबसे आम उपयोगों में से एक API प्रतिक्रियाओं को कैश करना है।

मान लीजिए आपके पास एक ऐप है जो मौसम डेटा प्रदर्शित करता है। हर बार जब कोई यूज़र पेज लोड करता है तो मौसम API को कॉल करने के बजाय, आप प्रत्येक शहर के लिए Redis में 5 या 10 मिनट के लिए प्रतिक्रिया को कैश कर सकते हैं। इस तरह, आप केवल कभी-कभी नया डेटा लाते हैं, और आपका ऐप बहुत तेज़ और चलाने में सस्ता हो जाता है।

एक और शक्तिशाली उपयोग का मामला सत्र प्रबंधन है। वेब एप्लिकेशन में, प्रत्येक लॉग-इन यूज़र का एक सत्र होता है जो ट्रैक करता है कि वे कौन हैं और वे क्या कर रहे हैं। Redis इस सत्र डेटा को स्टोर करने के लिए एक बेहतरीन जगह है क्योंकि यह तेज़ और अस्थायी है।

आप सत्र ID को कुंजी के रूप में स्टोर कर सकते हैं, जिसमें यूज़र की जानकारी हैश में होती है। एक समाप्ति समय जोड़ें, और आपके पास बिल्ट-इन ऑटोमैटिक सत्र टाइमआउट है। चूंकि Redis इतना तेज़ है और हाई-कंकरेंसी एक्सेस का समर्थन करता है, यह एक ही समय में लॉग इन करने वाले हजारों यूज़र्स वाले एप्लिकेशन के लिए एक बेहतरीन फिट है।

निष्कर्ष

इन-मेमोरी कैशिंग आपके ऐप को गति देने के सबसे सरल और सबसे प्रभावी तरीकों में से एक है, और Redis इसे लागू करना अविश्वसनीय रूप से आसान बनाता है। यह सिर्फ एक कैश नहीं है, यह तेज़, स्केलेबल, रीयल-टाइम सिस्टम बनाने के लिए एक टूलकिट है। आप कुछ पेज या API प्रतिक्रियाओं को कैश करके छोटी शुरुआत कर सकते हैं, और जैसे-जैसे आपकी ज़रूरतें बढ़ती हैं, Redis आपके साथ बढ़ता है।

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

लेख का आनंद लिया? LinkedIn पर मुझसे जुड़ें। जल्द ही एक और विषय के साथ मिलते हैं।

  1. Oracle के डिफर्ड COGS अकाउंटिंग फीचर के साथ लाभ सटीकता को अनुकूलित करें Oracle के डिफर्ड COGS अकाउंटिंग फीचर के साथ लाभ सटीकता को अनुकूलित करें

    परिचय यह पोस्ट Oracle® कॉस्ट मैनेजमेंट रिलीज़ 12.0.0 और बाद में डिफर्ड कॉस्ट ऑफ गुड्स सोल्ड (DCOGS) अकाउंट कार्यक्षमता का परिचय देती है। यह संवर्द्धन सीधे कॉस्ट ऑफ गुड्स सोल्ड (COGS) को राजस्व से मिलाता है, जो पहले संभव नहीं था। परिचय पिछले संस्करणों में, सिस्टम ने इन्वेंट्री से शिप किए गए सामानों

  1. JavaScript में ऑब्जेक्ट कैसे बनाएं और उसकी प्रॉपर्टीज एक्सेस करें? JavaScript में ऑब्जेक्ट कैसे बनाएं और उसकी प्रॉपर्टीज एक्सेस करें?

    JavaScript में ऑब्जेक्ट बनाने और उसकी प्रॉपर्टीज एक्सेस करने का कोड निम्न है -उदाहरण<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <tit

  1. HTML onkeydown इवेंट एट्रिब्यूट HTML onkeydown इवेंट एट्रिब्यूट

    विवरण HTML onkeydown इवेंट एट्रिब्यूट तब ट्रिगर होता है जब उपयोगकर्ता कीबोर्ड पर कुंजी दबाए रखता है। सिंटैक्स <tagname onkeydown=script>Content</tagname> उदाहरण आइए HTML onkeydown इवेंट एट्रिब्यूट का एक उदाहरण देखें: <!DOCTYPE html> <html> <head> <style> bod