بانکهای اطلاعاتی کلید/مقدار

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

۰

میانگین امتیاز

امتیاز کابران : شما هم امتیاز بدهید!

امتیاز کاربران: ۴٫۷۵ ( ۲ رای)

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

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

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

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

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

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

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

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

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

مجتبی بنائی

دانشجوی دکترای نرم‌افزار دانشگاه تهران (yun.ir/smbanaie)، مدرس دانشگاه و فعال در حوزه توسعه نرم‌افزار و مهندسی داده که تمرکز کاری خود را در چند سال اخیر بر روی مطالعه و تحقیق در حوزه کلان‌داده و زیرساخت‌های پردازش داده و تولید محتوای تخصصی و کاربردی به زبان فارسی و انتشار آنها در سایت مهندسی داده گذاشته است. مدیریت پروژه‌های نرم‌افزاری و طراحی سامانه‌های مقیاس‌پذیر اطلاعاتی از دیگر فعالیتهای صورت گرفته ایشان در چند سال گذشته است.

۵ دیدگاه

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

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

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

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

  3. سلام وقت شما بخیر من اگه بخوام حدودا ۲۰-۳۰ تا دیتابس با پسوند
    rdb. که با ردیس ساخته شده چطور میشه اینها رو با هم ادغام کرد جوری ک مشکلی پیش نیاد/ممنون میشم راهنمایی بفرمایید
    مهندسی داده :
    از ماژول ادغام کننده معرفی شده در سایت ردیس به این آدرس استفاده کنید.

    1.  

      سلام و درود بر شما دوست عزیز /
      تشکر از لطف شما/
      من قبلا این سایت رو پیدا کرده بودم منتها
      من خیلی اماتور هستم برای اینکار تو یوتویب یا سایت خارجی هست ک بشه طبق فیلم پیش برم؟

      مهندسی داده :
      در لینک فوق هم به سادگی توضیح داده شده است و با کمی وقت گذاشتن خواهید توانست مشکل را حل کنید. دل به دریا بزنید و آستین ها را بالازده، منتظر یوتیوب و … نباشید دوست عزیز …

  4. با سلام و واقعا خسته نباشید

    مطالب سایت شما واقعا عالی  و لذت بخش هستند و این بخاطر علاقه شخصی شما به علوم کامپیوتری هست 🙂

    متاسفانه اکثر هموطن ها چیزی جز ترجمه و یا کپی پیست بلد نیستن و در میان این انبوه محتوا وب سایت شما تنها وب سایتی هست که خوندن مطالبتون واقعاً لذت بخشه و به زبان عامیانه باید بگم خیلی کیف میکنم !

    راستی جناب من برنامه نویس سطح پایین هستم و کارم با بیت و بایته اما چند وقتیه طرف وب اومدم و چون بحث وب تمومی نداره واقعا برای من لذت بخشه

    تو قسمتی از وب که شدیداً گیر کردم سیستم های توزیعی هست

    میدونم برنامه نویسی هم روند موازی و … برای مقیاس پذیری مناسب هستند و میدونم scale یا عمودی است یا افقی اما نمیدونم این کامپیوترها قراره چجوری بهم وصل بشن یا یک دیتابیس چطوری توزیعی میشه و روی کلاستر میره !

    کلا از اینا سر درنمیارم !خونه چندتا کیس دارم و میخوام شدیداً این مورد رو آزمایش کنم اما متاسفانه دانشش رو ندارم!

    اصلاً وقتی کاربر یک سایت خیلی زیاد میشه چطوری این سایت روی چندتا کامپیوتر قرار میگیره ؟

    من چون کارم برنامه نویسی سطح پایینه برام یاد گرفتن زبون های جدید کاری نداره و بخاطر همین مبحث سیستم های توزیعی الکسیر رو یاد گرفتم که واقعا زبان جالبی هست اما نمیدونم در مورد توزیع پذیری چجوری باید از قدرت این زبان استفاده کنم ؟

    اگر امکانش باشه به من یک منبعی معرفی کنید که در این مورد مفصل صحبت کنه و یک پروژه مثلاً  وبلاگ ساده رو توزیعی بکنه با هر زبان و ابزاری هم باشه مهم نیست(داخل منبع اگر نحوه وصل شدن این کامپیوترها بهم  و… اینکه دقیقا چجوری یک سایت SCALE میشه رو بگه)

دیدگاهتان را بنویسید

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

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

دکمه بازگشت به بالا