آموزش مدیریت دیتابیسهای ردیس
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