Redis: ক্যাশ এবং কিউ
VDS-এ Redis ইনস্টল করা, পাসওয়ার্ড এবং লোকাল অ্যাড্রেসে বাইন্ডিং, মেমরি লিমিট ও eviction পলিসি, এবং ক্যাশ ও কিউয়ের মধ্যে পার্থক্য।
আপডেট: ২৩ আগস্ট, ২০২৬
Redis ডেটা মেমোরিতে রাখে, তাই এটি ক্যাশিং, সেশন, কাউন্টার এবং টাস্ক কিউয়ের জন্য ব্যবহৃত হয়। একটি VPS-এ এটি ঠিক ততক্ষণই কাজে লাগে যতক্ষণ এটি মেমোরিতে ধরে: ফ্রি মেমোরির চেয়ে বড় ওয়ার্কিং সেট আর গতি বাড়ায় না, বরং ক্র্যাশের কারণ হয়ে দাঁড়ায়।
ইনস্টলেশন
apt update && apt install -y redis-server # Debian, Ubuntu
dnf install -y redis # AlmaLinux, CentOS Stream
systemctl enable --now redis-server
redis-cli ping
PONG রেসপন্স মানে সার্ভার চলছে।
প্রয়োজনীয় কনফিগারেশন
/etc/redis/redis.conf ফাইল:
bind 127.0.0.1
protected-mode yes
requirepass long-random-password
maxmemory 512mb
maxmemory-policy allkeys-lru
appendonly no
systemctl restart redis-server
redis-cli -a 'password' ping
স্ক্যানাররা ইন্টারনেটে উন্মুক্ত পাসওয়ার্ডবিহীন Redis কয়েক মিনিটের মধ্যেই খুঁজে পায় এবং মাইনিংয়ের জন্য ব্যবহার করে। আপনার অ্যাপ্লিকেশন যদি একই মেশিনে থাকে, তাহলে bind 127.0.0.1 রাখুন এবং 6379 পোর্ট বাইরে উন্মুক্ত করবেন না। বাইরে থেকে অ্যাক্সেসের প্রয়োজন হলে শুধুমাত্র SSH টানেল বা VPN ব্যবহার করুন।
মেমোরি এবং এভিকশন
maxmemory স্পষ্টভাবে সেট করুন: এটি ছাড়া Redis বাড়তেই থাকে যতক্ষণ না সিস্টেম প্রসেস মারতে শুরু করে। টিয়ারের মেমোরির এক চতুর্থাংশ দেওয়া যুক্তিসঙ্গত।
| টিয়ার | মেশিনের মেমোরি | maxmemory |
|---|---|---|
| VDS-1 | 2 GB | 256 MB |
| VDS-2 | 4 GB | 512 MB |
| VDS-3 | 8 GB | 1–2 GB |
| VDS-5 | 24 GB | 4–6 GB |
পলিসি নির্ভর করে ভূমিকার উপর:
- ক্যাশ —
allkeys-lru, পুরনো কী চুপচাপ এভিক্ট হয়; - টাস্ক কিউ —
noeviction, একটি টাস্ক হারানো গ্রহণযোগ্য নয়, রাইট এরর ভালো।
এই বিরোধের কারণেই ক্যাশ এবং কিউ একই ডেটাবেসে মেশাবেন না। এগুলো আলাদা ডেটাবেস নম্বরে (SELECT 1) বা দুটি ইনস্ট্যান্সে ভাগ করুন।
ডিস্কে পার্সিস্টেন্স
ডিফল্টভাবে Redis পর্যায়ক্রমে dump.rdb-তে একটি স্ন্যাপশট ডাম্প করে। শুধু ক্যাশের জন্য এটি অপ্রয়োজনীয় ডিস্ক রাইট — save বন্ধ করুন। কিউয়ের জন্য appendonly yes চালু করুন: তাহলে মেশিন রিবুটের পরেও টাস্ক হারাবে না।
মনে রাখবেন, ডিস্ক রাইটের গতি টিয়ার দ্বারা সীমাবদ্ধ: প্রতি কোর 60 MB/s, 60-এর কম নয় এবং 400 MB/s-এর বেশি নয়।
মনিটরিং
redis-cli -a 'password' info memory
redis-cli -a 'password' info stats
redis-cli -a 'password' --stat
redis-cli -a 'password' slowlog get 10
মূল মেট্রিক হলো evicted_keys: ক্রমাগত বৃদ্ধি মানে মেমোরি যথেষ্ট নয় এবং ক্যাশ নিজের খরচ পুষিয়ে দিচ্ছে না।
সাধারণ ভুল
| লক্ষণ | কারণ |
|---|---|
NOAUTH Authentication required | অ্যাপ্লিকেশনকে পাসওয়ার্ড দেওয়া হয়নি |
OOM command not allowed | noeviction পলিসিতে maxmemory-তে পৌঁছে গেছে |
DENIED Redis is running in protected mode | bind 127.0.0.1 সহ বাইরের অ্যাক্সেস — এটি ইচ্ছাকৃত |
| রিবুটের পর ডেটা উধাও | পার্সিস্টেন্স চালু নেই |
| মেশিন swap-এ চলে গেছে | maxmemory এবং অন্যান্য সার্ভিসের যোগফল টিয়ারের মেমোরি ছাড়িয়ে গেছে |
প্রোডাকশন সার্ভারে
KEYS *ব্যবহার করবেন না: কমান্ডটি সব কী-এর উপর ইটারেট করার সময় Redis ব্লক করে রাখে। ইটারেশনের জন্যSCANব্যবহার করুন।