آموزش مدیریت دیتابیس‌های ردیس

امیرحسین بیگدلو 4 ماه قبل

Redis یک دیتابیس متن باز است که اطلاعات را به شکل key-value در حافظه memory ذخیره میکند. روش ذخیره سازی key-value نوعی از پایگاه داده NoSql است که در آن key به‌عنوان شناسه‌ منحصربه‌فرد برای value مرتبط خود عمل می‌کند. هر نمونه Redis شامل تعدادی پایگاه داده است که هر کدام می توانند کلیدهای مختلفی از انواع مختلف داده را در خود جای دهند. در این آموزش به نحوه انتخاب پایگاه داده، جابجایی کلیدها بین پایگاه داده و مدیریت و حذف کلیدها می پردازیم.

 

دوره پیشنهادی: دوره آموزش ردیس(redis)

 

 #  مدیریت دیتابیس‌ها در ردیس

یک نمونه ردیس از 16 پایگاه داده منطقی پشتیبانی می کند. این پایگاه‌های داده به طور کامل از یکدیگر جدا هستند، و هنگامی که فرمانی را در یک پایگاه داده اجرا می‌کنید، هیچ یک از داده‌های ذخیره‌شده در پایگاه‌های داده دیگر در نمونه Redis شما را تحت تأثیر قرار نمی‌دهد.

 

دیتابیس‌های Redis از 0 تا 15 شماره گذاری می شوند و به طور پیش فرض، هنگامی که به نمونه Redis خود متصل می شوید، به پایگاه داده 0 متصل می شوید. با این حال، می‌توانید پس از اتصال، پایگاه داده‌ای را که استفاده می‌کنید با دستور select تغییر دهید:

127.0.0.1:6379> select 15

 

اگر دیتابیسی غیر از دیتابیس 0 را انتخاب کرده باشید، در اعلان redis-cli نشان داده خواهد شد:

127.0.0.1:6379[15]> 

 

برای مبادله داده‌ها بین پایگاه‌های داده، از دستور swapdb استفاده کنید. مثال زیر داده‌های موجود در پایگاه‌داده 6 را با داده‌های موجود در پایگاه‌داده 8 تعویض می‌کند و هر کلاینت متصل به هر یک از پایگاه‌های داده می‌تواند فوراً تغییرات را ببیند:

127.0.0.1:6379> swapdb 6 8

 

در صورت موفقیت آمیز بودن swapdb به مقدار OK را برمی گرداند.

 

اگر می خواهید یک کلید را به یک نمونه Redis دیگر منتقل کنید، می توانید از دستور migrate استفاده کنید. این دستور قبل از حذف کلید از منبع، اطمینان حاصل می کند که کلید در هدف وجود دارد. هنگامی که migrate را اجرا می کنید، دستور باید شامل عناصر زیر به ترتیب باشد:

  • نام hostname یا شماره IP دیتابیس هدف
  • شماره پورت دیتابیس هدف
  • نام کلیدی که میخواهید منتقل کنید
  • شماره دیتابیسی که میخواهید اطلاعات را در آن ذخیره کنید
  • یک timeout، بر حسب میلی ثانیه، که حداکثر زمان ارتباط بیکار بین دو ماشین را تعیین می کند.

 

به عنوان مثال به دستور زیر دقت کنید:

127.0.0.1:6379> migrate 203.0.113.0 6379 key_1 7 8000

 

مقاله پیشنهادی: تغییر hostname در لینوکس

 

 #  مدیریت کلیدها در ردیس

تعدادی دستور ردیس وجود دارد که برای مدیریت کلیدها صرف نظر از نوع داده ای که در آنها نگهداری می شود مفید هستند. در این بخش به چند مورد خواهیم پرداخت.

 

دستور rename نام کلید مشخص شده را تغییر می دهد. در صورت موفقیت آمیز بودن، ok برمی گرداند:

127.0.0.1:6379> rename old_key new_key

 

می توانید از دستور randomkey برای بازگرداندن یک کلید تصادفی از پایگاه داده استفاده کنید:

127.0.0.1:6379> randomkey

"any_key"

 

از دستور type برای تعیین نوع داده دخیره شده استفاده کنید:

127.0.0.1:6379> type key_1

"string"

 

اگر کلید مشخص شده وجود نداشته باشد، دستور type مقدار None را برمیگرداند.

 

با دستور move می توانید یک کلید را به پایگاه داده دیگری در نمونه Redis خود منتقل کنید. move نام یک کلید و شماره پایگاه داده را می گیرد. به عنوان مثال، برای انتقال کلید key_1 به پایگاه داده 8، باید به شکل زیر کار کنید:

127.0.0.1:6379> move key_1 8

OK

اگر عملیات با موفقیت اجر شود، دستور move مقدار OK را برمیگرداند.

 

 

 #  حذف کلیدها در ردیس

برای حذف یک یا چند کلید از دستور del و نام کلیدها استفاده کنید:

127.0.0.1:6379> del key_1 key_2

 

این دستور تعداد کلیدهای حذف شده را برمیگرداند. مثلا اگر سه کلید حذف شده باشد، عدد 3 را برمیگرداند و اگر هیچ کلیدی حذف نشده باشد، عدد 0 را برمیگرداند.

 

برای حذف تمام کلیدها در پایگاه داده انتخاب شده، از دستور flushdb استفاده کنید:

127.0.0.1:6379> flushdb

 

برای حذف تمام کلیدها در تمام دیتابیس‌ها از دستور flushall استفاده کنید:

127.0.0.1:6379> flushall

 

مقاله پیشنهادی: دیتابیس ردیس چیست؟

 

 #  تهیه نسخه پشتیبان از دیتابیس‌ها در ردیس

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

127.0.0.1:6379> save

 

با این دستور یک کپی از تمام اطلاعات موجود در پایگاه داده، در فایلی با پسوند .rdb دخیره میشود.

 

save به صورت همزمان اجرا می شود و سایر کلاینت های متصل به پایگاه داده را مسدود می کند. از این رو، مستندات دستور save توصیه می کند که این دستور تقریباً هرگز نباید در یک محیط production اجرا شود. در عوض، استفاده از دستور bgsave را پیشنهاد می کند. این دستور به ردیس می‌گوید که پایگاه داده را fork کند. در این حالت دو دیتابیس بوجود خواهد آمد که دیتابیس والد به مشتریان خدمات میدهد و دیتابیس فرزند نسخه پشتیبان را تهیه میکند.

127.0.0.1:6379> bgsave

 

توجه داشته باشید که اگر هنگام انجام عملیات bgsave، کلاینت ها داده ها را اضافه یا تغییر دهند، این تغییرات در نسخه ثبت نمی شود.

 

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

. . .
save 900 1
save 300 10
save 60 10000
. . .
dbfilename "nextfile.rdb"
. . .

 

با این تنظیمات، Redis در صورت تغییر حداقل 1 کلید، هر 900 ثانیه یک بار - در صورت تغییر حداقل 10 کلید، هر 300 ثانیه، و در صورت تغییر حداقل 10000 کلید، هر 60 ثانیه، یک کپی فوری از پایگاه داده را به فایلی که توسط پارامتر dbfilename تعریف شده است صادر می کند.

 

می توانید از دستور shutdown برای پشتیبان گیری از داده های Redis خود استفاده کنید و سپس اتصال خود را ببندید. این دستور هر کلاینت متصل به پایگاه داده را مسدود می کند و سپس اگر حداقل یک save پیکربندی شده باشد، عملیات ذخیره را انجام می دهد، به این معنی که پایگاه داده را در حالت فعلی به یک فایل rdb صادر می کند و در عین حال از ایجاد هرگونه تغییر توسط کلاینت ها جلوگیری می کند:

127.0.0.1:6379> shutdown

 

اگر هیچ نقطه save را پیکربندی نکرده‌اید اما همچنان می‌خواهید Redis عملیات ذخیره را انجام دهد، گزینه save را به دستور shutdown اضافه کنید:

127.0.0.1:6379> shutdown save

 

اگر حداقل یک نقطه save را پیکربندی کرده اید، اما می خواهید سرور Redis را بدون انجام ذخیره، خاموش کنید، می توانید آرگومان nosave را به دستور اضافه کنید:

127.0.0.1:6379> shutdown nosave

 

 

 #  نتیجه گیری

این راهنما تعدادی از دستورات مورد استفاده برای مدیریت پایگاه داده ها و کلیدها را توضیح داد.

 

منبع: digitalocean

مطالب مشابه



مونگارد