redis爲何內存不宜過大

redis的高性能、穩定性都是不用懷疑的,但若是redis塞入數據過多,內存過大,那若是出問題,那它可能會給咱們的就是災難性的。redis

1 主庫宕機

主庫宕機,常見的策略爲「切主」。具體爲從該集羣剩餘從庫中選出一個從庫獎其升級爲主庫, 該從庫升級爲主庫後再講剩餘從庫掛載至其下成爲其從庫。
以上是一個完整的容災過程,而代價最大的過程爲從庫的從新掛載,而非主庫的切換。數據庫

2 擴容問題

一個20G的redis擴容一個從庫須要將近20分鐘,這個緊急時刻20分鐘業務可以容忍嗎?
爲何擴容還要業務呢?網絡

3 網絡很差致使從庫從作最終引起雪崩

網絡很差的狀況下, 從庫覺得是斷開鏈接,會自行從作主庫,會致使從庫雪崩。性能

4 內存越大,觸發持久化的操做阻塞主線程的時間越長

Redis是單線程的內存數據庫,在redis須要執行耗時的操做時,會fork一個新進程來作,好比bgsave,bgrewriteaof。 Fork新進程時,雖然可共享的數據內容不須要複製,但會複製以前進程空間的內存頁表,這個複製是主線程來作的,會阻塞全部的讀寫操做,而且隨着內存使用量越大耗時越長。線程

做者:不懶獅Blaise 連接:https://www.jianshu.com/p/ec7aa3f916c5 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。
相關文章
相關標籤/搜索