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

عملیات Redis در ابتدا همه بر اساس حافظه است، بنابراین عملکرد بسیار بالا است، اما پس از بسته شدن برنامه، داده ها از بین می روند.
بنابراین، باید دادههای درون حافظه را در فواصل زمانی مشخص روی دیسک بنویسیم که در اصطلاح Snapshot است.
هنگام بازیابی، فایل اسنپ شات مستقیماً در حافظه نوشته می شود.
این نیز یکی از تفاوت های اصلی Redis و Memcached است، زیرا Memcached قابلیت ماندگاری ندارد.
برای ماندگاری داده های حافظه Redis، Redis روش های زیر را در اختیار ما قرار می دهد:
- روش Snapshot (RDB، Redis DataBase): داده های حافظه را در یک لحظه خاص به شکل باینری روی دیسک بنویسید.
- Append Only File (AOF، Append Only File)، تمام دستورات عملیات را ضبط کرده و به صورت متنی به فایل اضافه کنید.
- پایداری ترکیبی، روشی جدید پس از Redis 4.0، پایداری ترکیبی مزایای RDB و AOF را با هم ترکیب می کند.هنگام نوشتن ابتدا داده های فعلی را به صورت RDB در ابتدای فایل بنویسید و سپس دستورات عملیات بعدی را به شکل AOF در فایل ذخیره کنید که نه تنها می تواند سرعت راه اندازی مجدد Redis را تضمین کند، بلکه باعث کاهش نیز می شود. خطر از دست دادن اطلاعات
زیرا هر طرح پایداری سناریوهای استفاده خاصی دارد.
حالت عملیات پایداری داده حافظه RDB Redis
- RDB (Redis DataBase) فرآیند نوشتن یک عکس فوری حافظه (Snapshot) در یک لحظه معین بر روی دیسک به شکل باینری است.
- اسنپ شات های حافظه همان چیزی است که در بالا گفتیم.به ثبت وضعیت داده ها در حافظه در یک لحظه خاص اشاره دارد.
- این شبیه عکس گرفتن است. وقتی از یک دوست عکس می گیرید، یک عکس می تواند فوراً تمام تصاویر دوست را ضبط کند.
- دو راه برای فعال کردن RDB وجود دارد: یکی راهاندازی دستی و دیگری راهاندازی خودکار.
RDB را به صورت دستی فعال کنید
دو عملیات برای راه اندازی دستی پایداری وجود دارد:save和bgsave.
تفاوت اصلی بین آنها در مسدود کردن یا عدم جلوگیری از اجرای رشته اصلی Redis است.
1. دستور save
اجرای دستور save در سمت کلاینت باعث تداوم Redis می شود، اما Redis را نیز در حالت مسدود کردن قرار می دهد. تا زمانی که RDB ادامه پیدا نکند، به دستورات ارسال شده توسط سایر کلاینت ها پاسخ نمی دهد، بنابراین باید با احتیاط از آن استفاده کرد. محیط تولید
127.0.0.1:6379> save OK 127.0.0.1:6379>
روند اجرای دستور در شکل نشان داده شده است
2. دستور bgsave
- bgsave (ذخیره پسزمینه) ذخیرهسازی پسزمینه است.
- بزرگترین تفاوت بین آن و دستور save این است که bgsave یک فرآیند فرزند را برای انجام پایداری فورک می کند.
- کل فرآیند فقط زمانی اتفاق میافتد که فرآیند فرزند چنگال باشد.فقط یک انسداد مختصر وجود دارد.
- پس از ایجاد فرآیند فرزند، فرآیند اصلی Redis می تواند به درخواست های سایر مشتریان پاسخ دهد.
با مسدود کردن کل فرآیندsaveدر مقایسه با فرمانbgsaveواضح است که فرمان برای استفاده ما مناسب تر است.
127.0.0.1:6379> bgsave Background Saving started # 提示开始后台保存 127.0.0.1:6379>
RDB به صورت خودکار فعال شود
پس از صحبت در مورد راه اندازی دستی، بیایید به تریگر خودکار نگاه کنیم.ما می توانیم شرایط را برای راه اندازی خودکار در فایل پیکربندی پیکربندی کنیم.
1. ذخیره mn
- save mn به این معنی است که در عرض m ثانیه، اگر n کلید تغییر کند، پایداری به طور خودکار فعال می شود.پارامترهای m و n را می توان در فایل پیکربندی Redis یافت.
- به عنوان مثال، ذخیره 60 1 به این معنی است که در 60 ثانیه، تا زمانی که یک کلید تغییر کند، تداوم RDB فعال می شود.
- ماهیت راهاندازی خودکار پایداری این است که اگر شرایط ماشه تنظیم شده برآورده شود، Redis به طور خودکار دستور bgsave را یک بار اجرا میکند.
توجه: هنگامی که چندین دستور ذخیره mn تنظیم می شود، هر شرطی باعث ماندگاری می شود.
به عنوان مثال، ما دو دستور save mn زیر را تنظیم می کنیم:
save 60 10 save 600 20
- هنگامی که مقدار کلید Redis 60 بار در 10 ثانیه تغییر می کند، پایداری فعال می شود.
- اگر کلید Redis در 60 ثانیه تغییر کند، و اگر مقدار آن کمتر از 10 بار تغییر کند، آنگاه Redis تعیین میکند که آیا کلید Redis حداقل 600 بار در 20 ثانیه تغییر کرده است یا خیر، و در این صورت، ماندگاری را فعال میکند.
2. فلاشال
- دستور flushall برای شستشوی پایگاه داده Redis استفاده می شود.
- در محیط تولید باید با احتیاط استفاده شود.
- هنگامی که Redis دستور flushall را اجرا می کند، ماندگاری خودکار را راه اندازی می کند و فایل های RDB را پاک می کند.
3. ماشه هماهنگ سازی Master-Slave
در Redis master-slave replication، زمانی که گره برده یک عملیات تکرار کامل را انجام می دهد، گره اصلی دستور bgsave را برای ارسال فایل RDB به گره برده اجرا می کند.این فرآیند به طور خودکار باعث تداوم Redis می شود.
Redis می تواند پارامترهای پیکربندی فعلی را از طریق دستورات پرس و جو کند.
فرمت دستور query این است:config get xxx
به عنوان مثال، اگر می خواهید تنظیمات نام ذخیره سازی یک فایل RDB را دریافت کنید، می توانید از آن استفاده کنید config get dbfilename .
اثر اجرا به شرح زیر است:
127.0.0.1:6379> config get dbfilename 1) "dbfilename" 2) "dump.rdb"
از آنجایی که سرور Redis هنگام بارگیری فایل RDB تا زمانی که بارگیری کامل شود مسدود می شود، ممکن است باعث طولانی شدن زمان شود و دسترسی به وب سایت امکان پذیر نباشد.
اگر می خواهید به صورت دستی فایل کش RDB dump.rdb Redis را حذف کنید، می توانید از دستور زیر برای یافتن مسیر ذخیره سازی فایل dump.rdb استفاده کنید ▼
find / -name dump.rdb
- سپس به صورت دستی فایل کش dump.rdb را از طریق SSH حذف کنید.
Redis پیکربندی RDB را تنظیم می کند
در مورد تنظیمات RDB می توانید از دو روش زیر استفاده کنید:
- فایل پیکربندی Redis را به صورت دستی تغییر دهید
- از تنظیمات خط فرمان استفاده کنید، تنظیمات پیکربندی dir "/usr/data" فرمان ذخیره سازی برای تغییر فایل RDB است.
نکته: پیکربندی در redis.conf را می توان از طریق config get xxx به دست آورد و از طریق مقدار xxx config set را تغییر داد و روش تغییر دستی فایل پیکربندی Redis به صورت سراسری مؤثر است، یعنی پارامترهای تنظیم شده با راه اندازی مجدد سرور Redis انجام نمی شود. گم شود، اما با استفاده از دستور اصلاح شود، پس از راه اندازی مجدد Redis از بین خواهد رفت.
با این حال، اگر می خواهید فایل پیکربندی Redis را به صورت دستی تغییر دهید تا فوراً اعمال شود، باید سرور Redis را مجدداً راه اندازی کنید و روش دستوری نیازی به راه اندازی مجدد سرور Redis ندارد.
بازیابی فایل RDB
هنگامی که سرور Redis راه اندازی می شود، اگر فایل RDB dump.rdb در دایرکتوری ریشه Redis وجود داشته باشد، Redis به طور خودکار فایل RDB را برای بازیابی داده های پایدار بارگذاری می کند.
اگر فایل dump.rdb در فهرست اصلی وجود ندارد، لطفاً ابتدا فایل dump.rdb را به دایرکتوری ریشه Redis منتقل کنید.
البته هنگام راه اندازی Redis اطلاعات log وجود دارد که نشان می دهد فایل RDB بارگذاری شده است یا خیر.
سرور Redis هنگام بارگذاری فایل RDB تا زمانی که بارگیری کامل شود، مسدود می شود.
اکنون می دانیم که پایداری RDB به دو صورت تقسیم می شود: راه اندازی دستی و راه اندازی خودکار:
- مزیت آن این است که فایل ذخیره سازی کوچک است و با شروع Redis بازیابی اطلاعات سریعتر است.
- نکته منفی این است که خطر از دست دادن اطلاعات وجود دارد.
بازیابی فایل های RDB نیز بسیار ساده است.فقط فایل های RDB را در دایرکتوری ریشه ردیس قرار دهید تا Redis به صورت خودکار داده ها را بارگذاری و بازیابی کند.
مزایا و معایب RDB
1) مزایای RDB
محتوای RDB داده های باینری است، حافظه کمتری را اشغال می کند، فشرده تر است و به عنوان یک فایل پشتیبان مناسب تر است.
RDB برای بازیابی فاجعه بسیار مفید است، این یک فایل فشرده است که می تواند برای بازیابی سرویس Redis سریعتر به یک سرور راه دور منتقل شود.
RDB میتواند سرعت Redis را تا حد زیادی بهبود بخشد، زیرا فرآیند اصلی Redis یک پردازش فرزند را برای ماندگاری دادهها روی دیسک منشعب میکند.
فرآیند اصلی Redis عملیاتی مانند ورودی/خروجی دیسک را انجام نمی دهد.
در مقایسه با فایل های فرمت AOF، فایل های RDB سریعتر راه اندازی مجدد می شوند.
2) معایب RDB
از آنجایی که RDB فقط می تواند داده ها را در یک بازه زمانی معین ذخیره کند، اگر سرویس Redis به طور تصادفی در وسط خاتمه یابد، داده های Redis برای مدتی از دست خواهند رفت.
فرآیندی که در آن RDB برای نگه داشتن آن بر روی دیسک با استفاده از Subentry به فورک های مکرر نیاز دارد.
اگر مجموعه داده بزرگ باشد، فورک می تواند زمان بر باشد، و اگر مجموعه داده بزرگ باشد، عملکرد CPU ضعیف است، که می تواند باعث شود Redis نتواند برای چند میلی ثانیه یا حتی یک ثانیه به مشتریان سرویس دهد.
البته، ما همچنین میتوانیم برای بهبود کارایی اجرای Redis، Persistence را غیرفعال کنیم.
اگر به از دست دادن اطلاعات حساس نیستید، می توانید این کار را هنگام اتصال مشتری انجام دهید config set save "" دستور غیرفعال کردن ماندگاری برای Redis.
在redis.conf، اگر درsaveدر ابتدا همه تنظیمات را کامنت بگذارید و ماندگاری نیز غیرفعال خواهد شد، اما معمولاً این کار انجام نمی شود.
وبلاگ امید چن ویلیانگ ( https://www.chenweiliang.com/ ) shared "نام کامل Redis RDB چیست؟ Redis RDB In-Memory Data Persistence Operation Mode» به شما کمک خواهد کرد.
به اشتراک گذاری لینک این مقاله خوش آمدید:https://www.chenweiliang.com/cwl-26677.html
برای کشف ترفندهای مخفی بیشتر🔑، به کانال تلگرام ما بپیوندید!
اگر دوست داشتید به اشتراک بگذارید و لایک کنید! اشتراک گذاری ها و لایک های شما انگیزه ادامه دار ماست!