① redis哨兵和集群區別是什麼
redis哨兵和集群的區別如下。
監控(Monitoring):Sentinel會不斷地檢查你的主伺服器和從伺服器是否運作正常,提醒(Notification):當被監控的某個Redis伺服器出現問題時,Sentinel可以通過API向管理員或者其他應用程序發送通知。
集群即使使用哨兵,redis每個實例也是全量存儲,每個redis存儲的內容都是完整的數據,浪費內存且有木桶效應。為了最大化利用內存,可以採用集群,就是分布式存儲。
即每台redis存儲不同的內容,共有16384個slot。每個redis分得一些slot,hash_slot = crc16(key) mod 16384找到對應slot,鍵是可用鍵,如果有{}則取{}內的作為可用鍵,否則整個鍵是可用鍵。
主從、哨兵、集群各自架構的優點和缺點對比
優點:·架構簡單,部署方使。高性價比:緩存使用時無需備用節點(單實例可用性可以用supervisor或crontab保證),當然為了滿足業務的高可用性,也可以犧牲一個備用節點,但同時刻只有一個實例對外提供服務,高性能。
缺點:·不保證數據的可靠性。在緩存使用,進程重啟後,數據丟失,即使有備用的節點解決高可用性,但是仍然不能解決緩存預熱問題,因此不適用於數據可靠性要求高的業務。
高性能受限於單核CPU的處理能力(Redis是單線程機制),CPU為主要瓶頸,所以適合操作命令簡單,排序、計算較少的場景。也可以考慮用Memcached替代。