Redis internals: কেন দ্রুত, কীভাবে নিরাপদে ব্যবহার করবেন
Redis শুধু cache নয়। এটি কেন এত দ্রুত, মূল data structure, persistence কীভাবে কাজ করে আর কোন সীমা মাথায় রাখতে হবে, জানুন।

Redis একটি in-memory data store। Data থাকে RAM-এ, তাই read-write মাইক্রোসেকেন্ডে হয়। এটি cache, session, counter, queue, leaderboard ও rate limiter-এ ব্যবহার হয়। এই সাইটও page-view গুনতে এটি ব্যবহার করে।
কেন দ্রুত
- Data memory-তে, disk-এ নয়।
- Command চলে একটি main thread-এ, তাই command-দের মধ্যে lock লাগে না এবং প্রতিটি command atomic। (নতুন সংস্করণ network I/O-তে বাড়তি thread ব্যবহার করতে পারে, তবে command তবুও একটি একটি করে চলে।)
- C-তে বানানো সহজ ও বেছে নেওয়া data structure।
Data structure
| ধরন | সাধারণ ব্যবহার |
|---|---|
| String | cache মান, counter (INCR) |
| Hash | ফিল্ডসহ object, যেমন user |
| List | সহজ queue, সাম্প্রতিক item |
| Set | অনন্য item, tag |
| Sorted set | leaderboard, সময়ভিত্তিক rate limiting |
| Stream | append-only event log |
Persistence
Restart-এ memory হারায়, তাই Redis disk-এ সেভ করতে পারে:
- RDB snapshot: নির্দিষ্ট বিরতিতে একটি ফাইল। ছোট ও দ্রুত লোড হয়, কিন্তু শেষ কয়েক মিনিটের data হারাতে পারে।
- AOF (append-only file): প্রতিটি write লগ করে। বেশি নিরাপদ (সঠিক সেটিংয়ে সর্বোচ্চ প্রায় এক সেকেন্ড হারায়), কিন্তু বড়।
- অনেক setup দুটোই ব্যবহার করে। নিছক cache হলে persistence বন্ধ রাখা যায়।
Memory সীমা ও eviction
RAM সীমিত। maxmemory দিন এবং cache-এর জন্য allkeys-lru-র মতো policy বাছুন। না দিলে Redis সব memory খেয়ে kill হতে পারে।
Scaling
- Replication: একটি primary, read ও failover-এর জন্য কয়েকটি replica।
- Redis Cluster: keyspace ১৬,৩৮৪ hash slot-এ ভাগ হয়ে node-দের মধ্যে ছড়ায়, তাই data ও load scale out হয়।
সতর্কতা
- একটি ধীর command (বড় database-এ
KEYS *) সবাইকে আটকে দেয়।SCANব্যবহার করুন। - অতি বড় key latency নষ্ট করে।
- Redis কখনো ইন্টারনেটে খোলা রাখবেন না। localhost বা private network-এ bind করুন ও পাসওয়ার্ড দিন।
মূল কথা: Redis দ্রুত কারণ এটি সহজ, in-memory, এবং command-এর জন্য single-threaded। সঠিক structure বাছুন, memory সীমা দিন, আর private রাখুন।
System Design সিরিজ, পর্ব ২ (building block): 1 নম্বর (মোট 14)।


