✅ مطلبی از در لینکدین kiarash amiri در مورد تفاوت redis و memcached و البته نکاتی در مورد دلایل استفاده شون
لینک در کامنت
✔️ مطالب مرتبط در کامنت
تو مصاحبه های بک اند تعداد پروژه ها یا تعداد ابزار های خفنی که استفاده کردین مهم نیست!! چیزی که بیشتر مهمه اینکه چرا از اون ابزار یا اون زبون استفاده کردین!
که اغلب هم به این جمله ختم میشه: بقیه استفاده می کنن و منم استفاده کردم😃
امروز بیاین ببینیم اگه گفتن چرا از #Memcached به جای #redis استفاده نکردین، چی باید بگیم؟
redis و memcached جفتشون دو تا ابزار اوپن سورسن که می تونن سرعت اپلیکیشن مارو با کش کردن دیتا درون رم افزاش بدن. اما یه سری تفاوت ها و موارد استفاده برای هرکدوم وجود داره:
🔴 تایپ های داده ها: memcached اساسا یه key/value استور سادست برای استرینگ ها و دیتا تایپ های ساده ولی در مقابلش redis ساپورت خیلی خوبی داره از رنج وسیعی از تایپ ها! مثل استرینگ، هش، لیست و …
🔴 نگهداری داده: توی redis شما می تونین دیتاتون رو #persistence کنین، یعنی اجازه بدین دیتاتون ریخته بشه توی دیسک و بعدش هر زمانی که بهش نیازش داشتین از دیسک دوباره انتقال داده میشه به مموری. در حالی که memcached این فیچر رو ساپورت نمی کنه و اگه سرورتون پایین بیاد یا ری استارت بشه دیتای ذخیره شدتون نابود میشه.
🔴 مموری و حافظه: memcached یه مقدار ثابت از مموریتون رو تایین می کنین و روی اون عملیات هاشو انجام میده در حالی که redis به طور داینمیک مموری خودش رو هر چقدر بخواد افزایش می ده و این موضوع باعث میشه redis انعطاف پذیرتر باشه ولی به این معنی که مموری بیشتری رو هم مصرف می کنه.(توی هر دو اگه مموری کامل پر بشه کلیدی که اخیرا کمترین استفاده رو شده از تو مموری حذف میشه)
🔴 کلاسترینگ: redis به طور داخلی دارای فیچر رپلیکیشن و پارتیشنینگ هستش و همین فیچر برای #ha کردن مناسبش می کنه. توی memcached ما این فیچر هارو نداریم ولی چون memcached دیزاین ساده ای داره، برای اسکیل کردن به صورت #horizontally خیلی مناسبه، یعنی می تونیم کلید هامون رو توی چندین memcached ذخیره کنیم.
🔴 همزمانی: memcached از ساختار مولتی ترد استفاده می کنه که بهش اجازه میده چندین کانکشن رو به طور همزمان با استفاده از ترد های جداگانه هندل کنه. در حالی که redis برای هندل کردن درخواست ها از یک ترد استفاده می کنه که این موضوع در memcached می تونه باعث بالا رفتن پرفورمنس با استفاده از همزمانی بشه.
بیایم یه جمع بندی بکنیم:
🔸 اگه تنها هدفتون کش کردن دیتاس، اگه به یه سیستم کش ساده علاقه دارین، اگه نمی خواین از دیتا تایپ های پیشرفته ای استفاده کنین، اگه دیتای زیادی دارین و می خواین با استفاده از چندین core از پرفورمنس مولتی ترد استفاده کنین، اگه می خواین سیستم کش کردنتون رو همون جوری که رشد می کنین به صورت horizontally گسترش بدین، در همه این موارد از memcached استفاده کنین.
🔸 با توجه به فیچر هایی که redis میده میشه گفت که دیگه فقط یه کشینگ سیستم نیست و میشه برای دیتابیس، مسیج بروکر یا به عنوان یه کیو هم ازش استفاده کرد. در حالی که memcached میشه گفت بیشتر برای سناریوهای ساده ذخیره سازی به کار میره جایی که پرسیست بودن دیتای برامون اهمیتی نداره و ساختار پیچیده ای ازش انتظار نداریم.
✅ رفقا شما هم اگه تجربه کش سیستم های دیگه ای رو دارین بگین یا شده یه جا به مشکلی بخورین که یه کش سیستم خاص فقط مشکل شما رو حل کرده باشه؟
پ.ن: اگه این محتوا رو دوست داشتین دمتون گرم که با لایک و Repost# حمایت می کنین!✌️