به قول شاعر نیکیُ پرسش؟ :general707:
حالا من یک چی گفنم :android06:
اول اینو بگم تفاوت های این دوتا بیشتر تو پروژه های بزرگ نمود پیدا میکنه ، اما تو پروژه های کوچیکتر هم اونقدر تفاوت وجود داره که مجاب تون کنه بخواهید ازش استفاده کنید.
سرتیتر های مقایسه رو از یک سایت دیگه گرفتم (گفتم که بدونید!)
نصب : برای من که فرق نداره ، روی این مورد بحثی ندارم ، البته Redis آسون تره :دی
مصرف حافظه :
برای موارد ساده memcached کارامد تر هست ، اما برای موارد پیچیده تر Redis بهتره ، هر چند اگر از Redis hashes استفاده کنید ، Redis بهتون کارایی بهتری میده.
پایداری داده :
تو این مورد memcached وقتی سیستم ریبوت بشه ، داده ها پاک میشه و بازسازی داده کش شده خودش یک پردازش اضافی هست ، از اون طرف Redis به صورت پیشفرض داده ها هر 2 ثانیه روی
دیسک سینک میکنه ، اینطور داده ها همیشه در دسترس هست!
تکرار داده ها (Replication)
memcached از این مورد پشتبانی نمیکنه ، در صورتی که Redis از تکرار به صورت master-slave پشتیبانی میکنه ، به این صورت که Redis یک کپی از Master رو روی هر Slave ایجاد میکنه
و شما هر چندتا که بخواهید میتونید Slave داشته باشید ، این مورد برای زمانی که اپلیکیشن تون رو برای افزایش کارایی روی چند سرور اجرا میکنید بعد با استفاده از یک LoadBalancer کاربرها رو روی
سرور های متفاوت میفرستید خیلی مفید ، مثلا فرض کنید شما میاید روی سایتتون برای هر کاربری که وارد میشه یک سشن ایجاد میکنید ، از چند سرور همزمان هم استفاده میکنید ، حالا اگه از memcached
استفاده کنید ، کاربر هر بار که به یک سرور جدید بره باید دوباره وارد بشه ، اما Redis چون تمام Slave ها بروز میشن ، این مشکل نداره و اون سشن برای سرورهای دیگه هم هست
نوع ذخیره سازی :
Memcached متغیرها رو روی حافظه رم ذخیره میکنه ، موقع خوندنشون هم مستقیم از حافظه میگیره و هیچ دیتابسی در کار نیست ، اما Redis مثل یک دیتابس که تو حافظه قرار داره ، دستور های خوندن و نوشتن
رو روی دیتابس اجرا میشه و اطلاعت رو تو حافظه برگشت میده ، بعضی توسعه دهنده ها از Redis برای مواردی مثل اپلیکیشن های آمارگیر بلادرنگ ازش استفاده میکنن.
سرعت خوندن نوشتن :
Memcached سایت ها با ترافیک بالا رو به خوبی پشتیبانی میکنه و می تونه درخواست های زیادی رو دریافت کنه و تو زمان کمی بهشون پاسخ بده ، Redis هم به خوبی با سایت های ترافیک بالا کار میکنه ،
و همچنین درخواست های نوشتن خیلی زیاد رو به خوبی پشتیبانی میکنه.
ساختار داده :
Memcached از رشته ها و نوع عدد صحیح برای ساختمان داده اش استفاده میکنه ، هر چیزی که شما بخواهید ذخیره کنید باید یکی از این دو مورد باشه ، در مقایسه Redis تنها از 2 نوع رشته و عدد صحیح
پشیبانی نمی کنه ، موارد مثل لیست ها و مجموعه ها و.. پشتیبانی میکنه.
طول Key:
همونطور که میدونید داده ها تو هر دو Memcached و Redis به صورت key-value (کلید : مقدار) ذخیره میشه ، حداکثر طول کلید در Memcached مقدار 250 bytes هست برای Redis مقدار2GB
نتیجه گیری :
اگر یک سیستم کش با ساختمان داده پیشرفته با قابلیت ذخیره تو دیسک میخواهید ، Redis گزینه مد نظرتون هست ، اما اگر دنبال یک سیستم کش ساده و سریع هستید Memcached رو باید انتخاب کنید.