Redis डेटा मेमोरी में रखता है और करीब एक मिलीसेकंड में जवाब देता है, इसलिए यह कैश, क्यू या सेशन स्टोर के रूप में बहुत सारे ऐप्स के पीछे काम करता है। इंस्टॉल करना एक कमांड है। असली काम डिफ़ॉल्ट सेटिंग्स में है: मेमोरी की कोई सीमा नहीं, स्नैपशॉट हाल की राइट्स खो सकते हैं, और दो आसान गलतियाँ जो चुपचाप आपका डेटा मिटा देती हैं या पासवर्ड बंद कर देती हैं। यह गाइड Ubuntu 24.04 पर यह सब कवर करती है। हर चरण हमने अपनी इमेज पर चलाया; आँकड़े एक Micro सर्वर (2 vCPU, 2 GB) से हैं।
आपको sudo वाला यूज़र चाहिए। Ubuntu सेटअप गाइड एक बना देती है।
1. इंस्टॉल करें
sudo apt update
sudo apt install -y redis-server
redis-server --version
redis-cli ping
इंस्टॉल में 13 सेकंड लगे और Redis 7.0.15 मिला। यह तुरंत और हर बूट पर शुरू होता है, PONG जवाब देता है और सिर्फ़ सर्वर पर ही सुनता है: 127.0.0.1:6379 और [::1]:6379, protected-mode yes के साथ। बिना डेटा के यह 13.5 MB RAM ले रहा था।
लॉग में पहले से एक चेतावनी थी:
WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition.
Redis डिस्क पर अपनी उस कॉपी से सेव करता है जो fork से बनती है, और कर्नेल की डिफ़ॉल्ट सेटिंग में मेमोरी कम होने पर यह fork विफल हो सकता है। एक बार ठीक कर दें:
echo 'vm.overcommit_memory = 1' | sudo tee /etc/sysctl.d/90-redis.conf
sudo sysctl -p /etc/sysctl.d/90-redis.conf
sudo systemctl restart redis-server
रीस्टार्ट के बाद चेतावनी चली गई।
2. मेमोरी सीमित करें
शुरू में maxmemory का मान 0 है, यानी कोई सीमा नहीं, और नीति noeviction है। Redis तब तक RAM लेता रहेगा जब तक सर्वर में खत्म न हो जाए। एक सीमा तय करें और तय करें कि वहाँ पहुँचकर क्या हो:
redis-cli CONFIG SET maxmemory 256mb
redis-cli CONFIG SET maxmemory-policy allkeys-lru
redis-cli CONFIG REWRITE
हमने 64 MB सीमा और 4,00,000 राइट्स के साथ दोनों नीतियाँ आज़माईं:
noeviction(डिफ़ॉल्ट): मेमोरी 63 MB पर रुक गई और नई राइट्सOOM command not allowed when used memory > 'maxmemory'त्रुटि के साथ विफल हुईं। क्यू या ऐसी किसी भी चीज़ के लिए सही जिसे आप खो नहीं सकते।allkeys-lru: Redis ने सबसे लंबे समय से इस्तेमाल न हुई की, कुल 48,606, हटा दीं और हर राइट सफल रही। कैश के लिए सही।
CONFIG REWRITE चल रही सेटिंग्स को /etc/redis/redis.conf में सेव करता है, ताकि रीस्टार्ट के बाद भी रहें। यह एक लाइन भी जोड़ता है जिसके बारे में चरण 4 से पहले जानना ज़रूरी है।
3. डिस्क पर सेव करने का तरीका चुनें
डिफ़ॉल्ट रूप से Redis एक घंटे में 1, पाँच मिनट में 100 या एक मिनट में 10,000 बदलावों के बाद स्नैपशॉट (/var/lib/redis/dump.rdb) लिखता है। हमने इसे रोकने के तीन तरीके आज़माए:
| Redis कैसे रुका | सिर्फ़ स्नैपशॉट (डिफ़ॉल्ट) | AOF फ़ाइल के साथ |
|---|---|---|
systemctl restart | कुछ नहीं खोया: बंद होते समय सेव करता है | कुछ नहीं खोया |
kill -9 से मारा | आख़िरी स्नैपशॉट के बाद वाली की गायब थी | 2 सेकंड पहले लिखी की मौजूद थी |
दोनों बार systemd ने कुछ सेकंड में Redis को खुद फिर से चला दिया।
अगर Redis में ऐसा डेटा है जिसकी कमी खलेगी, तो AOF फ़ाइल (append-only file) चालू करें। यह हर राइट दर्ज करती है और सेकंड में एक बार डिस्क पर भेजती है। यह चलते हुए सर्वर पर करें, फ़ाइल एडिट करके नहीं:
redis-cli CONFIG SET appendonly yes
redis-cli CONFIG REWRITE
redis-cli INFO persistence | grep aof_
हमने पहले दूसरा तरीका आज़माया, और उसकी कीमत हमारा डेटा थी। हमने redis.conf में appendonly no को appendonly yes किया और रीस्टार्ट किया। Redis खाली AOF के साथ उठा और स्नैपशॉट से कुछ लोड नहीं किया, इसलिए सारी मौजूदा की गायब हो गईं। फिर अगली बार बंद होते समय उसने अपनी नई सामग्री, पुरानी की के बिना, dump.rdb पर भी लिख दी। CONFIG SET इससे बचाता है: Redis पहले मेमोरी के डेटा से AOF लिखता है। रीस्टार्ट के बाद हमारी सारी की मौजूद थीं।
अगर Redis सिर्फ़ कैश है जो खाली शुरू हो सकता है, तो उल्टा करें और redis-cli CONFIG SET save "" से सेव करना बंद करें।
4. पासवर्ड लगाएँ
यह दूसरा जाल है। किसी भी CONFIG REWRITE के बाद Redis 7, redis.conf के आख़िर में यह लाइन जोड़ देता है:
user default on nopass ~* &* +@all
इसका मतलब है "डिफ़ॉल्ट यूज़र को पासवर्ड की ज़रूरत नहीं"। फिर हमने फ़ाइल में ऊपर requirepass जोड़ा और रीस्टार्ट किया। Redis अब भी बिना पासवर्ड PONG देता रहा, क्योंकि user वाली लाइन उसे रद्द कर देती है। पासवर्ड Redis के ज़रिए ही लगाएँ:
REDIS_PASS=$(openssl rand -hex 24)
echo "$REDIS_PASS"
redis-cli CONFIG SET requirepass "$REDIS_PASS"
REDISCLI_AUTH="$REDIS_PASS" redis-cli CONFIG REWRITE
पासवर्ड किसी सुरक्षित जगह रखें। अब Redis इसे उसी user default लाइन में SHA-256 हैश के रूप में रखता है। रीस्टार्ट के बाद redis-cli ping ने NOAUTH Authentication required. लौटाया और सिर्फ़ पासवर्ड से काम चला। redis-cli को यह REDISCLI_AUTH वेरिएबल से दें। -a के साथ यह प्रोसेस सूची में दिखता है, और redis-cli इसकी चेतावनी देता है। अपने ऐप में इसे Redis के पते में लिखें: redis://:PASSWORD@127.0.0.1:6379/0।
5. अपने कंप्यूटर से पहुँचें
Redis को 127.0.0.1 पर रहने दें और SSH टनल इस्तेमाल करें। अपने सर्वर का SSH पोर्ट दें; NAT प्लान पर यह आपका निजी पोर्ट है:
ssh -N -L 6380:127.0.0.1:6379 deploy@YOUR_SERVER_IP -p 22
जब तक यह चल रहा है, आपके कंप्यूटर पर redis-cli -p 6380 और डेस्कटॉप टूल सर्वर के Redis से बात करते हैं। इंटरनेट पर कुछ नया नहीं खुलता। SSH की गाइड से टनल बिना पासवर्ड लॉग इन करती है।
यह कितना तेज़ है
Micro टेस्ट सर्वर पर 50 क्लाइंट के साथ redis-benchmark के नतीजे:
| टेस्ट | प्रति सेकंड अनुरोध | मीडियन देरी |
|---|---|---|
| SET | 30,303 | 1.0 ms |
| GET | 35,149 | 0.9 ms |
| SET, हर राउंड ट्रिप में 16 कमांड | 2,72,109 | 2.4 ms |
| GET, हर राउंड ट्रिप में 16 कमांड | 4,14,938 | 1.3 ms |
किसी वेब ऐप के कैश या जॉब क्यू के लिए यह ज़रूरत से कहीं ज़्यादा है। अतिरिक्त रफ़्तार कमांड को बैच में भेजने (pipelining) से आती है।
कौन-सा प्लान
Redis को आपके डेटा के लिए RAM चाहिए और बहुत कम कुछ और। Nano (2 vCPU, 1 GB, $3/माह) maxmemory 256mb के साथ एक छोटे ऐप के बगल में Redis चला लेता है। Micro (2 GB, $5/माह) बड़े कैश और ऐप दोनों के लिए जगह छोड़ता है। अगर किसी और को Redis से सीधे जुड़ना है, तो अपना IPv4 लें (Nano-IP से, $8/माह) और फ़ायरवॉल में सिर्फ़ वही पता अनुमति दें। सारे प्लान VPS पेज पर हैं, और भुगतान Base, Ethereum या Polygon नेटवर्क पर USDT, USDC या ETH में होता है।
टिप्पणियाँ
अभी तक कोई टिप्पणी नहीं। पहले बनें।