ioredis؛ قدرتمند اما در حالت نگهداری
خلاصهٔ کاملتر
ioredis یه کلاینت Redis برای Node.js ـه که خودش رو «قوی، سریع و کامل» معرفی میکنه و تو مستندات پروژه اومده که شرکتهای بزرگی مثل علیبابا ازش استفاده میکنن. از Redis نسخهٔ 2.6.12 به بعد پشتیبانی میکنه و با Redis 7.x کاملاً سازگاره. نسخهٔ ۶ که آخرین نسخهست، به Node.js 20 یا بالاتر نیاز داره و با Redis 6.2 به بعد کار میکنه.
پشتیبانیش از امکانات ردیس تقریباً کامله: Cluster، Sentinel، Streams، پایپلاینینگ، اسکریپتنویسی Lua و Redis Functions، و Pub/Sub با پیامهای باینری. کنارش پیشوند شفاف کلیدها، TLS، صف آفلاین، تایپهای ES6 مثل Map و Set، دستورات GEO، ACL ردیس، NAT mapping و autopipelining هم هست. کل پروژه ۱۰۰٪ با TypeScript نوشته شده و تعاریف تایپ رسمی همراهشه.
API ـش هم با callback سنتی نود کار میکنه هم با Promise؛ اگه آرگومان آخر یه تابع نباشه، خروجی یه Promise میشه:
const Redis = require("ioredis");
const redis = new Redis();
redis.set("mykey", "value");
redis.get("mykey").then((result) => {
console.log(result); // Prints "value"
});همهٔ آرگومانها هم مستقیم به سرور ردیس فرستاده میشن، پس عملاً هر دستوری که ردیس داره پشتیبانی میشه. یه محدودیت مهم که مستندات روش تأکید میکنه اینه که یه کانکشن نمیتونه همزمان هم publisher باشه هم subscriber؛ به محض صدا زدن subscribe یا psubscribe کانکشن وارد حالت subscriber میشه و فقط دستورهای مربوط به اشتراک کار میکنن. پس اگه تو یه پروسه هر دو کارو میخوای، باید دو تا اینستنس جدا بسازی.
مهمترین نکته برای کسی که تازه میخواد شروع کنه، همون اول README اومده: ioredis یه پروژهٔ پایداره ولی نگهداریش «در حد توان» و فقط برای مسائل مرتبط انجام میشه. تیم Redis برای پروژههای جدید node-redis رو پیشنهاد میکنه؛ کلاینتی که از پایه بازطراحی شده، فعالانه نگهداری میشه و از دستورهای تازه مثل انقضای فیلد در هش و امکانات Redis Stack و Redis 8 (سرچ، JSON، سری زمانی و ساختارهای احتمالاتی) پشتیبانی داره.
نکات کلیدی:
- کلاینت کامل ردیس برای Node.js با پشتیبانی Cluster، Sentinel، Streams و Lua
- ۱۰۰٪ TypeScript با تعاریف تایپ رسمی
- هم سبک callback نود، هم Promise
- نسخهٔ ۶ به Node.js 20+ نیاز داره و با Redis 6.2 به بعد کار میکنه
- برای پروژههای جدید، تیم Redis کلاینت node-redis رو پیشنهاد میکنه




