ردیس
رِدیس (به انگلیسی: Redis) ذخیرهگاه کلید-مقدار داخل حافظه (به انگلیسی: in-memory) متنباز با مانایی انتخابی است.[1] این نرمافزار با انسی سی (به انگلیسی: ANSI C) نوشته شدهاست. بانی گسترش ردیس ویامویر است.[2][3]
توسعهدهنده(ها) | سالوادوره سانفیلیپو |
---|---|
انتشار ابتدایی | ۱۰ آوریل ۲۰۰۹ |
انتشار پایدار | ۵٫۰٫۷
۱۹ نوامبر ۲۰۱۹ |
مخزن | |
نوشتهشده با | سی |
سیستمعامل | چندسکویی |
گونه | پایگاه داده سند-گرا |
پروانه | پروانه بیاسدی |
وبگاه |
زبانهای پشتیبانی شده
زبانهایی که برای آنها کتابخانه کلاینت ردیس وجود دارد، شامل موارد ذیل است:[4] اکشناسکریپت، سی، سی++، سی شارپ، کلوژر، لیسپ معمولی، دارت، ارلنگ، گو، هسکل، هکس، آیاو، جاوا، جاوااسکریپت، لوا، آبجکتیو-سی، پرل، پیاچپی، پیور داتا، پایتون، آر، روبی، اسکالا، اسمالتاک، تیسیال.
مدل دادهای
از دید بیرون، ردیس نگاشتی از کلیدها به مقدارها است. برای نمونه فرمان زیر یک مقدار رشتهای به یک کلید تخصیص میدهد:[5]
SET mykey "Hello"
یا فرمانهای زیر یک لیست نو ایجاد میکند که دو عضو دارد:[6]
LPUSH mylist "world"
LPUSH mylist "hello"
نوع داده مقدار عملیات ممکن بر روی هر کلید را مشخص میکند. ردیس از انواع داده زیر پشتیبانی میکند:[7]
- رشته: رشتهها میتوانند هر نوع دادهای، مثلاً تصویر باینری، را نگهداری کنند. یک رشته باید حداکثر ۵۱۲ مگابایت طول داشته باشد.
- لیست: لیستها لیستهای از رشتهها هستند که به ترتیب درج مرتب شدهاند. میتوان به سر یا ته یک لیست یک عنصر جدید افزود.
- مجموعه: مجموعهها کلکسیون بدون ترتیبی از رشتهها هستند. میتوان به یک مجموعه رشته جدید افزود، حذف کرد، یا وجود یک رشته را در مجموعه امتحان کرد.
- درهمسازی (به انگلیسی: Hash): درهمسازیهای ردیس نگاشتی بین کلیدهای از نوع رشته به مقادیر از نوع رشتهاست.
- مجموعه مرتب: مشابه مجموعهها هستند، با این تفاوت که به هر عنصر مجموعه مرتب یک امتیاز تخصیص مییابد، و اعضای مجموعه مرتب از بیشترین امتیاز به کمترین امتیاز مرتب میشوند.
ماندگاری داده
ردیس چندین گزینه برای ماندگاری ارائه میدهد:[8]
- ذخیرهکردن یک نسخه از داده بر روی دیسک در بازههای منظم طبق قواعدی که توسط کاربر مشخص شدهاست،
- ثبت در شرح وقایع پس از دریافت هر درخواست نوشتن، که این شرح وقایع را در بازاجرای بعدی سرور میتوان دوباره اجرا کرد،
- غیرفعال کردن ماندگاری،
- ترکیبی از دو حالت اول.
در حالت اول، کاربر میتواند قواعدی مانند قاعده زیر تعریف کند:
save 60 1000
که به این معنا است که در بازههای ۶۰ ثانیهای حالت سیستم بررسی میشود، و اگر حداقل ۱۰۰۰ عمل نوشتن انجام شده باشد، یک نسخه از داده بر روی دیسک ذخیره میشود. کاربر میتواند چندین قاعده این چنین تعریف کند. مثلاً قاعدهٔ دیگری که اگر پس از ۱۰ ثانیه میزان تغییرات بیش از ۲۰۰۰ بود یک نسخه بر روی دیسک ذخیره شود.
در حالت دوم، یعنی ثبت رخدادها در شرح وقایع (log)، چندین گزینه وجود دارد:
- هماهنگکردن حالت فایل با حالت فیزیکی دیسک به محض عمل نوشتن (امنترین گزینه، ولی کندترین)،
- هماهنگکردن حالت فایل با حالت فیزیکی دیسک در هر یک ثانیه (امکان از دست دادن حداکثر یک ثانیه داده)،
- محول کردن هماهنگکردن حالت فایل با حالت فیزیکی دیسک به سیستمعامل (تندترین گزینه، ولی ناامنترین).
اسکریپتنویسی
ردیس از نسخه ۲٫۶ از اسکریپنویسی به زبان لوا پشتیبانی میکند.[9] این ویژگی به کاربر این امکان را میدهد که دنبالهای از عملیات را در سمت سرور به صورت تجزیهناپذیر اجرا کند. به همین دلیل، کاربر میتواند با استفاده از ویژگی ساختارهای داده پیچیدهتری را در سرور ردیس پیادهسازی کند. به عنوان مثال میتوان به موارد زیر اشاره کرد:
- صف تولیدکننده-مصرفکننده[10]٬
- فیلتر بولوم[11]٬
- و تقریباً هر ساختارداده قابل تصور.
اینستال ردیس
اینستال ردیس بر روی لینوکس دبیان:
apt-get install redis-server
کامپایل ردیس بر روی لینوکس:
wget https://web.archive.org/web/20131208124550/http://redis.googlecode.com/files/redis-2.6.10.tar.gz
tar xzf redis-2.6.10.tar.gz
cd redis-2.6.10
make
sudo make install
انعکاس
ردیس از انعکاس راهبر-پیرو (به انگلیسی: master-slave replication) پشتیبانی میکند.[12] میتوان یک پیرو را طوری تنظیم کرد که تنها خواندنی باشد. هر پیروی میتواند راهبر چندین پیرو دیگر باشد، بنابراین ساختار انعکاس ردیس ساختاری درختی دارد.
هر پیرو میتواند رونوشت دقیق سرورهای راهبر باشد،[12] یا اینکه طوری تنظیم کرد که تنها تغییرات خاصی از راهبر را دریافت کند. به این صورت که پیرو به کانالهای خاصی ثبتاشتراک کند (با استفاده از فرمان SUBSCRIBE)، و تغییراتی که سرور در این کانال با استفاده از دستور PUBLISH گزارش میکند را دریافت کند.[13]
کاربران سرشناس
از کاربران سرشناس ردیس میتوان به موارد زیر اشاره کرد:
منابع
- وبسایت ردیس - سوالات متداول
- ویامویر: خانه جدید ردیس
- ویامویر برنامهنویس کلیدی ردیس را استخدام میکند
- «کلاینتهای ردیس». بایگانیشده از اصلی در ۸ فوریه ۲۰۱۴. دریافتشده در ۲۲ اکتبر ۲۰۱۲.
- مستندات ردیس - دستور set
- مستندات ردیس - دستور lpush
- مستندات ردیس - انواع داده
- مستندات ردیس - ماندگاری ردیس
- مستندات ردیس - دستور EVAL
- صفهای قابل اعتماد ردیس با استفاده از اسکریپتنویسی لوا
- فیلتر بولوم در ردیس
- مستندات ردیس - انعکاس
- مستندات ردیس - اشتراک/انتشار
- Crowdsourced document analysis and MP expenses
- چگونه گیتهاب را سریع ساختیم
- آیا استک اورفلو از نهانسازی استفاده میکند؟
- لیست کاربران ردیس