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

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

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

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

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

برای مطالعه :   پستگرس : تلفیقی از بانکهای اطلاعاتی رابطه ای و NOSQL

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

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

برای مطالعه :   کدام را انتخاب کنیم : SQL vs NewSQL vs NoSQL

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

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

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

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

۲ نظرات

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

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

  2. با سلام مجدد لطفا آموزش پیشرفته درباره ردیس در سایتتون قرار بدید. دستورات ردیس و ساختمانهایی که استفاده میشه در سایت خودش واضح توضیخ داده شده منتهی نحوه کلاستر کردن اون، ارتباط با HDFS ذخیره سازی داده هخایی که برروی رم قرار دارند  بر روی دیسک و.. از این دست آموزشها بذارید ممنون میشیم.

    از شما به خاطر راه اندازی سایت فوق العاده کمال تشکر رو داریم
    مهندسی داده :
    مطالب زیادی در حال تولید و آماده شدن برای انتشار هستند و در مورد ردیس فعلا اولویت خاصی نداریم. ارتباط مستقیم با هدوپ معمولا در ردیس مورد استفاده قرار نمی گیرد بلکه به عنوان یک فضای موقت و با سرعت مناسب در کنار سایر دیتابیس ها مورد استفاده قرار میگیرد.
    در نسخه ۳ ردیس مشکل کلاستر کردن ردیس هم حل شده است و تنظیمات پیشرفته ای نیاز ندارد . برای ذخیره روی دیسک هم کافیست از دستور save یا bgsave‌ استفاده کنید و حتی تنظیم کنید که هر نیمساعت یکبار این بکاپ به صورت خودکار گرفته شود.
    موفق باشید

پاسخ دهید

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

Time limit is exhausted. Please reload CAPTCHA.