TGViewer
کدهالیک | codehalic کدهالیک | codehalic @codehalics · 4.15K subscribers
Post #735 844
کدهالیک | codehalic ر SETNX
FYI :

کلمه SETNX مخفف SET if Not Exist عه. کارش دقیقاً همینه: «تنها در صورتی این کلید رو بساز که از قبل وجود نداشته باشه».
در حالت عادی، وقتی تو ردیس می‌نویسی SET key value، اگر کلید از قبل وجود داشته باشه، مقدار جدید روی قبلی اوررایت (Overwrite) می‌شه. اما SETNX این‌طوری نیست:
اگر کلید وجود نداشته باشه: اون رو می‌سازه و عدد 1 (یا همان True) برمی‌گردونه.
اگر کلید وجود داشته باشه: هیچ کاری نمی‌کنه و عدد 0 (یا همان False) برمی‌گردونه.

قدیما توسعه‌دهنده‌ها اول SETNX می‌زدن، بعد تو خط بعدی برای کلید یک زمان انقضا (EXPIRE) می‌ذاشتن تا کلید تا ابد تو حافظه نمونه. اما این کار خطرساز بود! اگر سرور دقیقاً بعد از خط اول کرش می‌کرد، کلید تا ابد می‌موند و سیستم قفل می‌شد (Deadlock).

امروزه در ردیس سینیورها از دستور توسعه‌یافته‌ی SET با آپشن‌های اختصاصی استفاده می‌کنند که کل این پروسه را اتمیک می‌کند:

SET idempotency_key_123 "processing" NX EX 60

این دستور یعنی: «کلید رو بساز فقط اگر نبود (NX) و بعد از ۶۰ ثانیه منقضیش کن (EX 60)». همه این‌ها در یک میلی‌ثانیه و بدون هیچ فاصله‌ای انجام می‌شه.

@codehalics | کدهالیک
  • ❤ 2
More from @codehalics
  1. Oct 7, 2026توی نسخه جدید 16.4 نکس‌جی‌اس، مهم‌ترین خبر اینه که مدل جدید Cache Components بالاخره کامل…
  2. Oct 5, 2026یه اتفاق جالب افتاده: یه برنامه‌‌نویس موقع ساخت پروژه دات‌نت با Claude متوجه شده هوش مصنوع…
  3. Oct 5, 2026دوره جامع معماری نرم‌افزار منتشر شد. در این آموزش ۴ ساعته و فشرده، مباحث Clean Architectur…
  4. Oct 4, 2026این پروژه خیلی جالب بود یه نفر نرم افزار مدیریت انبار رو از یه کار خشک و تکراری به یه بازی…
  5. Oct 4, 2026سلام دوستان موسسه فرا رو آماده استخدام یک نیروی کارآموز حضوری در تهران برای پوزیشن فرانت ا…
  6. Oct 3, 2026امروز سرور کدهالیک یه مدت از دسترس خارج شد. بعد از پیگیری معلوم شد هیت‌سینک سرور مشکل داشت…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →