خانه / NoSQL / بانکهای اطلاعاتی کلید/مقدار / ردیس (Redis) – بانک اطلاعاتی NoSQL مقیم در حافظه
Redis

ردیس (Redis) – بانک اطلاعاتی NoSQL مقیم در حافظه

دفعه اولی که با بانک اطلاعاتی ردیس به عنوان یکی از رایجترین بانکهای اطلاعاتی NoSQL در گروه بانکهای کلید/مقدار از سر کنجکاوی کار کردم ، برایم تجربه ای لذت بخش همراه با علامت سوالی بزرگ بود . لذت بخش از این باب که دیدم این دیتابیس دو دستور اصلی بیشتر ندارد یکی set  و یکی هم get . با دستور set یک شناسه (یک کلید یا مقدار منحصر بفرد) به همراه یک مقدار را ذخیره می کنیم و با دستور get و دادن کلید مورد نیاز، مقدار متناظر توسط ردیس به ما برگشت داده می شود.

علامت سوالم هم بابت این بود که دیتابیسی با این قابلیت ساده (البته در نگاه اول) چه کاربردی می تواند داشته باشد .

گذشت و گذشت تا برای یک سایت خبری دنبال راه حلی بودیم که درخواستهای ما را از کاساندرا کمتر کند و سریعتر بتوانیم به درخواستهای کاربران جواب بدهیم . ابتدا به ذهنم رسید که خاصیت حافظه نهان (cache) کاساندرا را فعال کنم که آنهم فقط روی کلید ها و سطرها فعال می شود اما متوجه شدم مشکل فقط درون حافظه نگهداشتن کلیدها یا بعضی سطرهای پردرخواست نیست بلکه نتیجه یک جست و جو در بانک اطلاعاتی باید در حافظه نهان ذخیره شود .

توضیح بیشتر اینکه در این سایت اخبار بر اساس کشور ، زبان ، گروه و ساعت جستجو می شود و خود عمل جستجو با این پارامترها زمان بر است . حال اگر کاربران زیادی همزمان این درخواستها را داشته باشند ، فشار بسیار زیادی به کاساندرا (یا هربانک دیگری که ذخیره اخبار را برعهده دارد ) وارد می شود اما اگر بتوانیم نتیجه جستجو را در بازه زمانی مثلا پنج دقیقه در حافظه نگه داریم و تمام کاربرانی که از یک کشور و با یک زبان اخبار گروه خاصی را در آن بازه جستجو کنند نتیجه جستجوی قبلی به آنها برگشت داده شود، سرعت بسیار بالا خواهد رفت .

اینجا بود که کاربرد اصلی ردیس را به عینه مشاهده کردم به این صورت که به ازای هر جستجو پارامترهای آن یعنی کشور، زبان ، ساعت و گروه را به هم می چسبانیم که کلید جستجو را شکل دهد و نتیجه جستجو ، مقدار این کلید می شود که در ردیس با زمان حذف پنج دقیقه ذخیره می شود . حال به ازای هر جستجو ، ابتدا بسته به پارامترهای آن کلید مربوطه را پیدا کرده و از ردیس مقدار مربوطه را بازیابی و به کاربر نمایش می دهیم . اگر مقداری برای آن کلید یافت نشد، آنگاه به دیتابیس اصلی وصل شده ، جستجو را انجام می دهیم ، نتیجه را در ردیس ذخیره کرده و به کاربر هم نشان می دهیم ….

هر چند ردیس قابلیت ذخیره مقادیر در حافظه اصلی یا هارد سیستم را هم دارد اما برای ما همان ذخیره موقت اطلاعات در حافظه گره گشا بود …

به عنوان تتمه بحث اینکه علاوه بر ردیس ، بانک اطلاعاتی MemCached هم همین کار را انجام میدهد اما امکانات ردیس مانند پشتیبانی از لیست و ساختمان داده های دیگر ، باعث شد این دیتابیس را انتخاب کنیم …

برای آموزش ردیس می توانید از این آموزش مفید و مختصر استفاده کنید .

(این مطلب برگرفته از سایت شخصی بنده است )

یک نظر

  1. با سلام لینک مربوط به اموزش مختصر و مفید ردیس اشتباه وارد شده ( از ادرس لوکال ووردپرس استفاده کردید) لطفا اصلاح کنید.

    ممنون بابت سایت خوبتون
    مهندسی داده :
    ممنون از تذکر بجای شما . لینک دانلود اصلاح شد .

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Time limit is exhausted. Please reload CAPTCHA.