کش یعنی ذخیرهٔ نتیجهٔ یک محاسبه یا کوئری برای استفادهٔ دوباره. ابزارهای رایج: Redis، Memcached و کش HTTP.

الگوی cache-aside

async function getUser(id) {
  const cached = await redis.get("user:" + id);
  if (cached) return JSON.parse(cached);

  const user = await db.users.findById(id);
  await redis.set("user:" + id, JSON.stringify(user), "EX", 300);
  return user;
}

نکته‌ها

  • TTL: برای هر کلید زمان انقضا بگذارید تا داده کهنه نماند.
  • باطل‌سازی: هنگام تغییر داده، کلید مربوط را حذف یا به‌روز کنید.
  • هجوم به کش خالی: برای کلیدهای داغ از قفل یا انقضای تصادفی استفاده کنید.

«دو چیز در علوم کامپیوتر سخت است: باطل‌سازی کش و نام‌گذاری». پس فقط جایی کش بگذارید که سود اندازه‌گیری‌شده دارد.