Redis internals: কেন দ্রুত, কীভাবে নিরাপদে ব্যবহার করবেন

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

key-value কার্ডসহ দ্রুত memory ব্লক

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)।

আরও পড়ুন

Recursion ও backtracking সহজ উদাহরণে

Recursion সমস্যার ছোট কপি সমাধান করে সমাধান করে। অনেক interview সমস্যায় ব্যবহৃত চিন্তার ধাপ ও backtracking টেমপ্লেট শিখুন।

Interview ও DSA•৩ মিনিটে পড়া