【Python學習教程】Python常見面試題之Redis篇!

老男孩IT教育機構發表於2021-10-21

  學Python找工作的時候,大家肯定都會遇到一些不知道如何回答的問題,比如關於Redis的問題。而且近期也有不少網友諮詢小編這類問題,對此特整理了一篇文章,希望能夠幫助到你們。

  Redis當機怎麼解決?

  當機:伺服器停止服務。

  如果只有一臺redis,肯定會造成資料丟失,無法挽救;多臺redis或者是redis叢集,當機則需要分為在主從模式下區分來看:

  slave從redis當機,配置主從複製的時候才配置從的redis,從的會從主的redis中讀取主的redis的操作日誌1,在redis中從庫重新啟動後會自動加入到主從架構中,自動完成同步資料;

  如果從資料庫實現了持久化,此時千萬不要立馬重啟服務,否則可能會造成資料丟失,正確的操作如下:在slave資料上執行SLAVEOF ON ONE,來斷開主從關係並把slave升級為主庫,此時重新啟動主資料庫,執行SLAVEOF,把它設定為從庫,連線到主的redis上面做主從複製,自動備份資料。

  以上過程很容易配置錯誤,可以使用redis提供的哨兵機制來簡化上面的操作。簡單的方法:redis的哨兵(sentinel)的功能。

  Redis叢集方案該怎麼做?都有哪些方案?

  1,codis目前用的最多的叢集方案,基本和twemproxy一致的效果,但它支援在節點數量改變情況下,舊節點數,據客恢復到新hash節點。

  2,redis cluster3.0自帶的叢集,特點在於他的分散式演算法不是一致性hash,而是hash槽的概念,以及自身支援節點設定從節點。

  3,在業務程式碼層實現,起幾個毫無關聯的redis例項,在程式碼層,對key進行hash計算,然後去對應的redis例項運算元據。這種方式對hash層程式碼要求比較高,考慮部分包括,節點失效後的替代演算法方案,資料震盪後的字典指令碼恢復,例項的監控等等。

  Redis回收程式是如何工作的?

  一個客戶端執行了新的命令,新增了新的資料。

  redis檢查記憶體使用情況,如果大於maxmemory的限制,則根據設定好的策略進行回收。

  一個新的命令被執行等等,所以我們不斷地穿越記憶體限制的邊界,透過不斷達到邊界然後不斷回收回到邊界以下。

  如果一個命令的結果導致大量記憶體被使用(例如很大的集合的交集儲存到一個新的鍵),不用多久記憶體限制就會被這個記憶體使用量超越。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2838583/,如需轉載,請註明出處,否則將追究法律責任。

相關文章