ক্যাশ, লক, কিউ, স্ট্রিম, Pub/Sub, রেট লিমিট, প্রেজেন্স — একটাই Redis, আটটা আলাদা কাজ। কোড থেকে, সাথে যা যা আরও ভালো করা যেত।
এই আটটার মধ্যে শুধু প্রথমটাই "ক্যাশ"। বাকি সাতটা Redis-কে ব্যবহার করছে এমন কাজে যেগুলো PostgreSQL দিয়ে করলে হয় ধীর হতো, নয়তো একেবারেই সম্ভব হতো না।
versionক্যাশের ফরম্যাট বদলালে পুরনো এন্ট্রি নিজে থেকেই বাতিল
— ম্যানুয়ালি ফ্লাশ করতে হয় নাfreshUntilRedis-এর TTL আর "ফ্রেশনেস" আলাদা দুইটা
জিনিস। TTL শেষ হওয়ার আগেই ডেটা বাসি হতে পারেjitter ±১০%একসাথে লেখা হাজারটা key যেন একই সেকেন্ডে
এক্সপায়ার না করে — নাহলে প্রতি TTL-এ একটা করে ঢেউJSON.parse failভাঙা এন্ট্রি পেলে DEL করে miss রিটার্ন — এরর নাটিল রঙ = Redis থেকে এলো। এটা একটা এন্ডপয়েন্টের হিসাব না — এটা সব প্রোটেক্টেড এন্ডপয়েন্টের হিসাব।
৫০০ জনের নিচে — ZSET, একদম নিখুঁত সংখ্যা আর
প্রত্যেকের অ্যাভাটার।
৫০০-র উপরে — HyperLogLog, ~০.৮% ভুল হতে পারে, কিন্তু ৫ হাজার হোক
বা ৫ লাখ, মেমোরি একই ১২ KB।
XADDমেসেজ স্ট্রিমে, MAXLEN ~ 100000 —
পুরনো নিজে থেকেই ছাঁটাইXREADGROUPওয়ার্কার ২০০টা করে পড়ে, BLOCK
5000 — খালি থাকলে অপেক্ষা, পোলিং নয়saveChats()একসাথে সব DB-তেXACKসফল হলেই কেবল স্ট্রিম থেকে "পড়া হয়েছে" চিহ্নব্যাচ ফেলতখন একটা একটা করে আবার চেষ্টা — একটা খারাপ
মেসেজের জন্য ২০০টা যেন না হারায়XADD :deadতাতেও ফেল? dead-letter স্ট্রিমে কারণসহ, তারপর
ACKXAUTOCLAIMওয়ার্কার ক্র্যাশ করলে ৩০ সেকেন্ড পর অন্য ওয়ার্কার তার
কাজ দখল করে নেয়