آشنایی با ردیس و کاربردهای آن در برنامه نویسی
Redis : Remote Dictionary Server
خوب امروز میخواییم در مورد ردیس صحبت کنیم که اصلا چی هست و کجاها تو برنامه نویسی به درد ما میخوره
Redis یک دیتابیس درون حافظه ای (این یعنی داده ها در رم ذخیره میشوند و قطعا سرعت دسترسی به آنها خیلی بالاتر از هارد است) هست که با کلیدها : مقادیر (key:value) کار میکنه که معمولا بهش سرور ساختار داده میگن ، برگ برنده ردیس و دلیل محبوبیتش نسبت به ما بقی دیتابیس هایی که با کلیدها : مقادیر کار میکنن اینه که ردیس از اکثر داده ها بنیادی که برنامه نویس ها باهاشون سرو کار دارن پشتیبانی میکنه مثل (lists, maps, sets, sorted sets)
عملکرد استثنایی ، سادگی ذخیره سازی اطلاعات که ارتباطات پیچیده ای بین داده ها ایجاد نمیکند ، باعث این محبوبیت شده است.
Redis از بسیاری از زبان های برنامه نویسی پشتیبانی میکنه که برای اینکه عمق این پشتیبانی در زبان های برنامه نویسی رو درک کنیم 🙂 باید بدونید ردیس در حال حاضر از زبان هایی همچون Haskell, Haxe, Io و Julia, Lua نیز پشتیبانی میکنه.
کاربردها :
Caching : با توجه به performance بالای ردیس، توسعه دهنده ها زمانی بهش رو میارن که حجم خواندن و نوشتن اطلاعات از توان دیتابیس های به اصطلاح سنتی خارج میشه و چون درخواست های مکرر و سنگین به هارد ارسال میشه از قابلیت کش ردیس استفاده میکنیم که یکبار عملیات خواندن اطلاعات رو انجام بدیم و اطلاعات واکشی شده رو به کش ردیس بسپریم تا در واکشی های مشابه بعدی بتوانیم مستقیم از حافظه رم این اطلاعات رو بخونیم و مجدد کوئری نزنیم یا پردازش مجدد انجام ندیم .
Publish and Subscribe : بعد از ورژن ۲ قابلیت pub/sub رو به ردیس اضافه شد که از این طریق publisher ها یا همان ارسال کننده های پیام یک پیام را ارسال میکنند و این پیام از طریق Redis Channel به subscribers یا همان دریافت کننده ها ارسال میشود که دریافت کننده ها نه از سایر دریافت کننده ها اطلاعی دارند و نه از ارسال کننده پیام .
Queues : همچنین میتوانیم برای صف کردن جاب ها و وظایف جهت اجرا از ردیس استفاده کنیم .
Counters : بیشتر اپلیکیشن ها و بیزینس های امروزی بر پایه اطلاعات و اعداد و رقم ها بر پا هستند و این اعداد در لحظه و به صورت real time در اپلیکیشن تغییر میکنند به طور مثال در داشبورد بیشتر سیستم ها گزارش هایی بر مبنای اعداد و ارقام میبیبنیم که برای هر بار ایجاد آنها نیاز هست یک کوئری در دیتابیس اجرا کنیم و یک فیلد incremental را در دیتابیس افزایش دهیم و. آپدیت کنیم اما با استفاده از ذخیره سازی این شمارشگرها و آمارها در ردیس نیاز به خواندن شمارش قبلی و اضافه کردن آنها نداریم و از انجایی که واکشی این اعداد نیاز به کوئری ندارد خیلی سریع لود میشوند.
به طور مثال تصور کنید میخواهیم تعداد بازدید های یک صفحه وب را ذخیره کنیم و در لحظه این اطلاعات رو یه جا نشون بدیم برای این کار استفاده از mysql موردی نداره اما وقتی در ثانیه ۱۰۰۰ بازدید از سایت انجام بشه باید ۱۰۰۰ بار روی دیتابیس واکشی انجام بشه و اپدیت انجام بشه که این کار قطعا سربار زیادی خواهد داشت اما با استفاده از دستورات INCR , DECR میتوانیم ارزش یک کلید را افزایش یا کاهش دهیم و در لحظه مقدار آن را get کنیم و نمایش دهیم.