Redis

redis index
توسط
redis 2

پایگاه داده درون حافظه یا سرور ساختار داده؟

Redis یک پایگاه داده و حافظه پنهان سریع، منبع باز تحت مجوز BSD، نوشته شده به زبان C و بهینه سازی شده برای سرعت است. نام Redis از "REmote DIctionary Server" آمده است.

Redis اغلب سرور ساختار داده نامیده می شود زیرا انواع داده های اصلی آن شبیه به آنهایی است که در زبان های برنامه نویسی مانند رشته ها، لیست ها، دیکشنری ها (یا هش ها)، مجموعه ها و مجموعه های مرتب شده یافت می شود. همچنین بسیاری از ساختارهای داده و ویژگی های دیگر را برای شمارش تقریبی، موقعیت جغرافیایی و پردازش جریان ارائه می دهد.

از میان پایگاه‌های داده NoSQL، ساختارهای داده مختلف Redis آن را به ساختارهای داده بومی نزدیک‌تر می‌کند که برنامه‌نویسان معمولاً در برنامه‌ها و الگوریتم‌ها از آن استفاده می‌کنند. این سهولت استفاده، آن را برای توسعه سریع و برنامه های کاربردی سریع ایده آل می کند، زیرا ساختارهای داده اصلی به راحتی بین فرآیندها و سرویس ها به اشتراک گذاشته می شوند.

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

redis 1

Redis اساساً برای چه مواردی استفاده می شود؟

حافظه پنهان هوشمند

Redis معمولاً به‌عنوان حافظه پنهان برای ذخیره داده‌هایی که اغلب به آنها دسترسی دارند در حافظه استفاده می‌شود تا برنامه‌ها بتوانند به کاربران پاسخگو باشند. Redis با ظرفیت تعیین مدت زمانی که می‌خواهید داده‌ها را نگه دارید و کدام داده‌ها را ابتدا حذف کنید، یک سری الگوهای ذخیره هوشمند را فعال می‌کند.

دلایل زیادی برای کش هوشمند وجود دارد و تأثیر زیادی بر تجربیات کاربر، بهره‌وری کاربر، نرخ پرش و درآمد خرده‌فروشی دارد. تحقیق در مورد این اثرات در مقاله سفید ما در مورد مزایای پایگاه داده های درون حافظه گردآوری شده است.

سیاست های انقضا و اخراج داده

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

در برخی موارد استفاده، معیاری که اخیراً استفاده شده است (LRU) یا کمتر استفاده شده است (LFU) برای اخراج منطقی تر است. Redis پیاده سازی های احتمالی قابل تنظیم این گزینه های سیاست کش را نیز فراهم می کند.

redis 3

سایر کاربردها و ویژگی های Redis چیست؟

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

جریان و پردازش جریان

Redis با لیست‌ها و پیام‌های pub/sub (در زیر) یک کارگزار صف و پیام عالی ایجاد می‌کند. در نسخه ۵.۰ ردیس استریم ها و پردازش استریم با الهام از پروژه آپاچی کافکا به مجموعه ویژگی های آن اضافه شد. به روشی مشابه با موضوعات کافکا، جریان‌های کار می‌توانند گروه‌های «مصرف‌کننده» پردازشی داشته باشند که کار را بررسی می‌کنند و زمان تکمیل آن را تأیید می‌کنند. اگر پس از انقضای یک دوره زمانی هیچ تاییدیه ای دریافت نشد، سایر مصرف کنندگان می توانند این کار را برای اطمینان از انجام آن انتخاب کنند.

این الگوهای کافکا مانند را در حافظه فعال می‌کند و به ویژه برای تجربه‌های رابط کاربری غیرمسدود کننده پاسخگو مفید است.

پیام انتشار و اشتراک (Pub/Sub)

پیام‌رسانی Pub/Sub اجازه می‌دهد تا پیام‌ها به کانال‌ها ارسال شوند و همه مشترکین آن کانال آن پیام را دریافت کنند. این ویژگی به دلیل ذخیره نشدن پیام‌ها، اطلاعات را قادر می‌سازد تا بدون استفاده از فضای پایگاه داده به سرعت در زیرساخت شما جریان یابد. بنابراین می‌توانید سرویس‌ها را از بار روی سایر زیرساخت‌ها یا برنامه‌ها آگاه کنید یا امتیازات بازی را به‌روزرسانی کنید و اعلان‌ها را ارسال کنید.

لوا اسکریپت

Redis دارای یک امکان اسکریپت نویسی است که اسکریپت های سفارشی را قادر می سازد به زبان Lua نوشته و اجرا شوند. این به کاربران اجازه می‌دهد تا ویژگی‌هایی را در قالب اسکریپت‌هایی با اجرای سریع به Redis اضافه کنند. Lua دارای مقداردهی اولیه بسیار سریع است و اسکریپت ها را قادر می سازد تا وظایف مختلفی را روی داده ها انجام دهند بدون اینکه سرعت Redis را به میزان قابل توجهی کاهش دهند. از آنجایی که فرآیند Redis هسته ای تک رشته ای است، این امر عملیات اتمی را تضمین می کند.

ویژگی های جغرافیایی

Redis مجموعه ای از ساختارها و دستورات داده های شاخص جغرافیایی را ارائه می دهد. مختصات طول و عرض جغرافیایی ذخیره می شود و کاربران می توانند فواصل بین اشیاء را جستجو کنند یا برای اشیاء در شعاع معین از یک نقطه جستجو کنند. این دستورات می توانند مقادیر خود را در قالب های مختلف (فوت، کیلومتر و غیره) برگردانند.

سرعت Redis اجازه می دهد تا این نقاط داده به سرعت به روز شوند. در یک برنامه اشتراک‌گذاری سواری، می‌توان از این ویژگی‌ها برای اتصال کاربر با درایورهای مجاور استفاده کرد، و سپس به‌روزرسانی‌های بی‌درنگ با نزدیک شدن یا در حین سواری ارائه کرد. Redis دقیقاً برای این مورد در شرکت های بزرگ حمل و نقل و تحویل استفاده می شود.

هایپرلاگ

ساختار داده هایپرلاگ شمارش تقریبی مجموعه ها را در فضایی بسیار کوچکتر از نگه داشتن مجموعه ای منحصر به فرد کامل از آیتم ها امکان پذیر می کند. یک شمارنده ساده می تواند دو برابر شود و مجموعه ای از شناسه های کاربری یا IP ها فضای زیادی را اشغال می کنند. Hyperlog به مقدار بسیار کمی از حافظه اجازه می دهد تا تقریب خوبی از اشیاء منحصر به فرد را نگه دارد.

نقشه های بیت

بیت مپ ها امکان ذخیره سازی بسیار کارآمد مقادیر True و False را به صورت ۱ یا ۰ در رشته های Redis می دهند. با اجازه دادن به این نوع داده های بولی برای ذخیره کارآمد موارد استفاده بسیاری امکان پذیر است.

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

سررسید سازمانی

خالق ردیس، سالواتوره سانفیلیپو، یا آنتیرز، در ابتدا پیش نویس یک فروشگاه داده در حافظه را در چند صد خط TCL برای یک استارت آپ تهیه کرد. در سال ۲۰۰۹ او نسخه ای را که به زبان C نوشته شده بود برای جامعه متن باز منتشر کرد.


پست های توصیه شده