پایگاه داده Redis چیست؟

همان طور که در درس آشنایی با انواع پایگاه داده های NoSQL یاد گرفتیم، Redis یکی از انواع پایگاه داده NoSQL در زیر مجموعه Key/Value قرار میگیرد. البته در وب سایت Redis و در برخی از منابع، Redis به عنوان یک سرور ساختار داده ای(data structure server) نامیده می شود. به این ترتیب که تمامی اطلاعات در این پایگاه داده به صورت کلید و مقدار ذخیره می شوند. در این پایگاه داده میتوان با استفاده از یک کلید مشخص، به مقدار آن کلید دست پیدا کرد.

جدول زیر را در نظر بگیرید:

Value Key
book1 user_42
book1, book3 user_234
book2, book37 user_245

این یک پایگاه داده ساده جهت دست یابی به اطلاعات سبد خرید کاربران یک وب سایت است. در این جدول، هر کاربر با یک شناسه کاربری مشخص می شود و محتویات سبد خرید او در قسمت مقدار(Value) قرار میگیرد. با استفاده از یک کلید(Key) خاص میتوانید مقدار(Value) آن کلید را دریافت کنید. مثلا اگر اطلاعات سبد خرید یک کاربر با شناسه user_234 را درخواست کنید، مقدار ستون Value برای شما برگردانده می شود(که در اینجا book1, book3 است)

این یک نمونه از پایگاه داده Key/Value از نوع NoSQL بود. همان طور که دیدید این پایگاه داده ها میتوانند مقادیر را به همراه کلید ها ذخیره کنند و در مواقع لازم با سرعت زیاد بازیابی کنند.

طبق تعریف وب سایت Redis، ردیس یک پایگاه داده در حافظه اصلی(In Memory) است که برای نگهداری ۱. پایگاه داده ها، یا ساخت نوعی ۲. حافظه نهان(Cache) و یا  ۳. واسط پیام(Message Broker) از آن استفاده می شود. اجازه بدهید به تک تک این عبارات بپردازیم.

۱. پایگاه داده که مشخص است. ۲. حافظه نهان یا همان Cache هم بیشتر برای مواردی استفاده می شود که میخواهیم دسترسی به دیسک را کم کنیم و یا یک سری اطلاعات در سرورهای خارجی داریم که میخواهیم به جای مراجعه به آن سرورها، اطلاعات را یک بار دریافت کنیم و به صورت حافظه نهان در Redis قرار دهیم. ۳. واسط پیام یا همان Message Broker هم کار انتقال یک یا چند پیام از یک نرم افزار به یک نرم افزار دیگر را بر عهده دارد. Redis از معماری Publish/Subscribe جهت سیستم واسط پیام استفاده می کند.

گفتیم که در Redis دو عنصر کلید و مقدار داریم. عنصر مقدار یا همان Value میتواند انواع مختلفی داشته باشد. اجازه دهید به برخی این مقادیر و کاربردهای آن ها نگاهی بیندازیم:

String: اگر مقداری از نوع String بود یک رشته ساده است که میتواند عملیات درج/به هنگام سازی/حذف/دریافت را از آن کلید انجام دهید. مثلا با دستور زیر میتوانید یک کلید بسازید و یک رشته در آن درج کنید:

SET user_1 book1

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

GET user_1

با این کار، مقدار book1 به شما برمیگردد.

list: با استفاده از لیست میتوانید یک آرایه دلخواه داشته باشید. میتوانید در این آرایه عنصری را اضافه یا کم کنید و عملیات مختلف دیگر را انجام دهید.

sets: اگر مقدار موجود از نوع sets باشد در واقع یک لیست دارید که هیچ کدام از عناصر آن تکراری نیستند

sorted sets: مانند همان مقدارهایی از نوع sets است با این تفاوت که هر عنصر از مجموعه دارای وزن است و این وزن میتواند به صورت مرتب نگهداری شود(مثلا از وزن کم به زیاد)

hashes: اگر با انواع JSON آشنایی داشته باشید درک مقادیر hashes برای شما راحت تر است. این مقادیر میتوانند آبجکت هایی مانند JSON را در مقادیر خود داشته باشند.

همچنین Redis میتواند مقادیر دیگری را نیز ذخیره و بازیابی کند. یکی از انواع آن ها، HyperLogLog است. فرض کنید میخواهید تعداد تکرار یک عنصر خاص از یک لیست را به دست آورید. اگر این لیست بسیار بزرگ باشد، این کار به راحتی انجام نمیپذیرد. مقادیر HyperLogLog میتواند با دقت بسیار بالا(اما نه ۱۰۰ درصد) تعداد تکرار یک عنصر خاص را حدس بزند. این کار با استفاده از الگوریتم های خاصی امکان پذیر است. انواع دیگری مانند ذخیره سازی عناصری از جنس موقعیت های مکانی و یا Bitmapها نیز در Redis وجود دارند که کاربردهای خاص خود را دارند.

Redis امکانات بسیار متنوع و خاصی دارد که در مواقع مختلف میتوان از آن ها استفاده کرد. اطلاعات بیشتر در وب سایت https://redis.io موجود است. این پایگاه داده می تواند توسط بسیار از زبان های برنامه نویسی مورد استفاده قرار بگیرد. لیستی از زبان هایی که Redis را پشتیبانی می کنند در اینجا آمده است.

شرکت های بسیار زیاد از Redis استفاده میکنند. در اینجا میتوانید یک کاربرد اصلی ردیس در نگهداری اطلاعات کاربران در شبکه اجتماعی twitter را مشاهده کنید.

منابع این بحث و اطلاعات بیشتر

» وب سایت Redis.io

» وب سایت redislab

» وب سایت creadera

» وب سایت infoq

» این PDF از وب سایت redislab

در صورت تمایل به یادگیری بیشتر، منابع بالا در نظر گرفته شده است. می توانید با خواندن این منابع، به یادگیری خود در این زمینه عمق ببخشید

پاسخ دهید

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