當你學完Python并到工作時,你肯定會遇到一些不知道如何回答的問題,比如關于Redis的問題。而最近也有不少網友針對這類問題咨詢了小編,我整理了一篇關于這方面的文章,希望對大家有所幫助。
如何解決Redis宕機?
宕機:服務器停止服務
如果只有一個redis,肯定會造成數據丟失,無法保存;如果有多個redis或者redis集群,宕機則需要分為在主從模式下區分來看:
slave從redis宕機,redis是在配置主從復制的時候配置的。slave會從master的redis中讀取master的redis操作日志1。庫在redis中重啟后,會自動添加到主從架構中,自動完成數據的同步;
如果從庫實現了持久化,此時不要立即重啟服務,否則可能導致數據丟失。正確操作如下:對slave數據執行SLAVEOFONONE,斷開主從關系,將slave升級到master庫,此時重啟主庫,執行SLAVEOF,設置為從庫,連接主redis進行主從復制,自動備份數據。
以上過程容易配置錯誤,可以使用redis提供的sentinel機制來簡化以上操作。簡單的方法:redis的哨兵功能。
Redis集群解決方案怎么做?有哪些解決方案?
1.Codis目前使用最多的集群方案,效果和twemproxy基本一樣,但是支持在節點數變化時將舊節點數恢復到新的hash節點。
2、rediscluster3.0自帶的集群特點是它的分布式算法不是一致性hash,而是hashslot的概念,并且本身支持node設置slave節點。
3、在業務代碼層,設置幾個不相關的redis實例,在代碼層,對key進行hash計算,然后去對應的redis實例對數據進行操作。這種方式對hash層代碼要求比較高,一些考慮包括節點故障后的替代算法方案、數據沖擊后的字典腳本恢復、實例監控等。
Redis回收過程是如何工作的?
客戶端運行了一個新命令并添加了新數據。
redis檢查內存使用情況,如果大于maxmemory限制,會按照設置的策略回收。
一個新的命令被執行等等,所以我們不斷地跨越內存限制的邊界,通過不斷地到達邊界然后不斷地回收回到邊界之下。如果一個命令的結果導致大量內存被使用(例如,一個大集合的交集被保存到一個新的鍵),那么這個內存限制就會被這個內存使用量超越。