ردیس

رِدیس (به انگلیسی: Redis) ذخیره‌گاه کلید-مقدار داخل حافظه (به انگلیسی: in-memory) متن‌باز با مانایی انتخابی است.وب‌سایت ردیس - سوالات متداول این نرم‌افزار با انسی سی (به انگلیسی: ANSI C) نوشته شده‌است. بانی گسترش ردیس وی‌ام‌ویر است.وی‌ام‌ویر: خانه جدید ردیس

 زبان‌های پشتیبانی شده 
زبان‌هایی که برای آن‌ها کتابخانه کلاینت ردیس وجود دارد، شامل موارد ذیل است: اکشن‌اسکریپت، سی، سی++، سی شارپ، کلوژر، لیسپ معمولی، دارت، ارلنگ، گو، هسکل، هکس، آی‌او، جاوا، جاوااسکریپت، لوا، آبجکتیو-سی، پرل، پی‌اچ‌پی، پیور داتا، پایتون، آر، روبی، اسکالا، اسمال‌تاک، تی‌سی‌ال.

 مدل داده‌ای 
از دید بیرون، ردیس نگاشتی از کلیدها به مقدارها است. برای نمونه فرمان زیر یک مقدار رشته‌ای به یک کلید تخصیص می‌دهد:مستندات ردیس - دستور set
SET mykey "Hello"

یا فرمانهای زیر یک لیست نو ایجاد می‌کند که دو عضو دارد:مستندات ردیس - دستور lpush
LPUSH mylist "world"
LPUSH mylist "hello"

نوع داده مقدار عملیات ممکن بر روی هر کلید را مشخص می‌کند. ردیس از انواع داده زیر پشتیبانی می‌کند:مستندات ردیس - انواع داده
 رشته: رشته‌ها می‌توانند هر نوع داده‌ای، مثلاً تصویر باینری، را نگهداری کنند. یک رشته باید حداکثر ۵۱۲ مگابایت طول داشته باشد.
 لیست: لیست‌ها لیست‌های از رشته‌ها هستند که به ترتیب درج مرتب شده‌اند. می‌توان به سر یا ته یک لیست یک عنصر جدید افزود.
 مجموعه: مجموعه‌ها کلکسیون بدون ترتیبی از رشته‌ها هستند. می‌توان به یک مجموعه رشته جدید افزود، حذف کرد، یا وجود یک رشته را در مجموعه امتحان کرد.
 درهم‌سازی : درهم‌سازی‌های ردیس نگاشتی بین کلیدهای از نوع رشته به مقادیر از نوع رشته‌است.
 مجموعه مرتب: مشابه مجموعه‌ها هستند، با این تفاوت که به هر عنصر مجموعه مرتب یک امتیاز تخصیص می‌یابد، و اعضای مجموعه مرتب از بیشترین امتیاز به کمترین امتیاز مرتب می‌شوند.

 ماندگاری داده 
ردیس چندین گزینه برای ماندگاری ارائه می‌دهد:مستندات ردیس - ماندگاری ردیس
 ذخیره‌کردن یک نسخه از داده بر روی دیسک در بازه‌های منظم طبق قواعدی که توسط کاربر مشخص شده‌است،
 ثبت در شرح وقایع پس از دریافت هر درخواست نوشتن، که این شرح وقایع را در بازاجرای بعدی سرور می‌توان دوباره اجرا کرد،
 غیرفعال کردن ماندگاری،
 ترکیبی از دو حالت اول.

در حالت اول، کاربر می‌تواند قواعدی مانند قاعده زیر تعریف کند:
save 60 1000

که به این معنا است که در بازه‌های ۶۰ ثانیه‌ای حالت سیستم بررسی می‌شود، و اگر حداقل ۱۰۰۰ عمل نوشتن انجام شده باشد، یک نسخه از داده بر روی دیسک ذخیره می‌شود. کاربر می‌تواند چندین قاعده این چنین تعریف کند. مثلاً قاعدهٔ دیگری که اگر پس از ۱۰ ثانیه میزان تغییرات بیش از ۲۰۰۰ بود یک نسخه بر روی دیسک ذخیره شود.

در حالت دوم، یعنی ثبت رخدادها در شرح وقایع (log)، چندین گزینه وجود دارد:
 هماهنگ‌کردن حالت فایل با حالت فیزیکی دیسک به محض عمل نوشتن (امن‌ترین گزینه، ولی کندترین)،
 هماهنگ‌کردن حالت فایل با حالت فیزیکی دیسک در هر یک ثانیه (امکان از دست دادن حداکثر یک ثانیه داده)،
 محول کردن هماهنگ‌کردن حالت فایل با حالت فیزیکی دیسک به سیستم‌عامل (تندترین گزینه، ولی ناامن‌ترین).

 اسکریپت‌نویسی 
ردیس از نسخه ۲٫۶ از اسکریپ‌نویسی به زبان لوا پشتیبانی می‌کند.مستندات ردیس - دستور EVAL این ویژگی به کاربر این امکان را می‌دهد که دنباله‌ای از عملیات را در سمت سرور به صورت تجزیه‌ناپذیر اجرا کند. به همین دلیل، کاربر می‌تواند با استفاده از ویژگی ساختارهای داده پیچیده‌تری را در سرور ردیس پیاده‌سازی کند. به عنوان مثال می‌توان به موارد زیر اشاره کرد:
 صف تولیدکننده-مصرف‌کنندهصف‌های قابل اعتماد ردیس با استفاده از اسکریپت‌نویسی لوا٬
 فیلتر بولومفیلتر بولوم در ردیس٬
 و تقریباً هر ساختارداده قابل تصور.

 اینستال ردیس 
اینستال ردیس بر روی لینوکس دبیان:

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

 انعکاس 
ردیس از انعکاس راهبر-پیرو  پشتیبانی می‌کند.مستندات ردیس - انعکاس می‌توان یک پیرو را طوری تنظیم کرد که تنها خواندنی باشد. هر پیروی می‌تواند راهبر چندین پیرو دیگر باشد، بنابراین ساختار انعکاس ردیس ساختاری درختی دارد.

هر پیرو می‌تواند رونوشت دقیق سرورهای راهبر باشد، یا اینکه طوری تنظیم کرد که تنها تغییرات خاصی از راهبر را دریافت کند. به این صورت که پیرو به کانال‌های خاصی ثبت‌اشتراک کند (با استفاده از فرمان SUBSCRIBE)، و تغییراتی که سرور در این کانال با استفاده از دستور PUBLISH گزارش می‌کند را دریافت کند.مستندات ردیس - اشتراک/انتشار

 کاربران سرشناس 
از کاربران سرشناس ردیس می‌توان به موارد زیر اشاره کرد:

 گاردینCrowdsourced document analysis and MP expenses
 گیت‌هابچگونه گیت‌هاب را سریع ساختیم
 استک اورفلوآیا استک اورفلو از نهان‌سازی استفاده می‌کند؟
 کریگزلیستلیست کاربران ردیس

 فلیکر
 بلیزارد انترتینمنت
 بامپ
 دیسکاس

 دیگ

 منابع 

 پیوند به بیرون 
 وبگاه رسمی ردیس
 وب‌نوشت سالوادوره سانفیلیپو، ایجادکننده و توسعه‌دهنده ردیس

رده:پایگاه‌های داده مبتنی بر سند
رده:سامانه‌های مدیریت پایگاه داده آزاد
رده:معماری رایانش توزیع‌شده
رده:نرم‌افزار قابل برنامه نویسی با لوآ (زبان برنامه‌نویسی)
رده:نرم‌افزارهای آزاد نوشته‌شده با سی
رده:نرم‌افزارهایی که از پروانه بی‌اس‌دی استفاده می‌کنند
رده:نواس‌کیوال
رده:نهان‌سازی پایگاه داده