redis的高性能、穩定性都是不用懷疑的,但若是redis塞入數據過多,內存過大,那若是出問題,那它可能會給咱們的就是災難性的。redis
主庫宕機,常見的策略爲「切主」。具體爲從該集羣剩餘從庫中選出一個從庫獎其升級爲主庫, 該從庫升級爲主庫後再講剩餘從庫掛載至其下成爲其從庫。
以上是一個完整的容災過程,而代價最大的過程爲從庫的從新掛載,而非主庫的切換。數據庫
一個20G的redis擴容一個從庫須要將近20分鐘,這個緊急時刻20分鐘業務可以容忍嗎?
爲何擴容還要業務呢?網絡
網絡很差的狀況下, 從庫覺得是斷開鏈接,會自行從作主庫,會致使從庫雪崩。性能
Redis是單線程的內存數據庫,在redis須要執行耗時的操做時,會fork一個新進程來作,好比bgsave,bgrewriteaof。 Fork新進程時,雖然可共享的數據內容不須要複製,但會複製以前進程空間的內存頁表,這個複製是主線程來作的,會阻塞全部的讀寫操做,而且隨着內存使用量越大耗時越長。線程