1、單節點實例
單節點實例仍是比較簡單的,平時作個測試,寫個小程序若是須要用到緩存的話,啓動一個Redis仍是很輕鬆的,作爲一個key/value數據庫也是能夠勝任的。html
2、主從模式(master/slaver)
主從模式的簡介和配置,此處再也不說,redis
2.1 搭建方式
主從模式的搭建仍是很簡單的,官網的介紹就更加簡單了,只須要在配置文件中加上一行配置:數據庫
slaveof 192.168.1.1 6379
指明master的ip和端口號就能夠了,實際上真的這麼簡單。小程序
2.2 其餘配置
在redis.conf中,還有一些關於主從的其餘配置,按需配置便可。緩存
首先談談我對主從模式的必要性:服務器
主從模式的一個做用是備份數據,這樣當一個節點損壞(指不可恢復的硬件損壞)時,數據由於有備份,能夠方便恢復。
另外一個做用是負載均衡,全部客戶端都訪問一個節點確定會影響Redis工做效率,有了主從之後,查詢操做就能夠經過查詢從節點來完成。
對主從模式必須的理解(結論已經驗證過,能夠自行驗證):負載均衡
一個Master能夠有多個Slaves
默認配置下,master節點能夠進行讀和寫,slave節點只能進行讀操做,寫操做被禁止
不要修改配置讓slave節點支持寫操做,沒有意義,緣由一,寫入的數據不會被同步到其餘節點;緣由二,當master節點修改同一條數據後,slave節點的數據會被覆蓋掉
slave節點掛了不影響其餘slave節點的讀和master節點的讀和寫,從新啓動後會將數據從master節點同步過來
master節點掛了之後,不影響slave節點的讀,Redis將再也不提供寫服務,master節點啓動後Redis將從新對外提供寫服務。
master節點掛了之後,不會slave節點從新選一個master
對有密碼的狀況說明一下,當master節點設置密碼時:測試
客戶端訪問master須要密碼
啓動slave須要密碼,在配置中進行配置便可
客戶端訪問slave不須要密碼
2.1 主從節點的缺點
主從模式的缺點其實從上面的描述中能夠得出:htm
master節點掛了之後,redis就不能對外提供寫服務了,由於剩下的slave不能成爲master
這個缺點影響是很大的,尤爲是對生產環境來講,是一刻都不能中止服務的,因此通常的生產壞境是不會單單隻有主從模式的。因此有了下面的sentinel模式。blog
3、sentinel模式
sentinel模式的簡介和配置,此處再也不說,參照下面的博客:Redis Sentinel模式詳解https://www.cnblogs.com/yiwan...。
sentinel的中文含義是哨兵、守衛。也就是說既然主從模式中,當master節點掛了之後,slave節點不能主動選舉一個master節點出來,那麼我就安排一個或多個sentinel來作這件事,當sentinel發現master節點掛了之後,sentinel就會從slave中從新選舉一個master。
對sentinel模式的理解:
sentinel模式是創建在主從模式的基礎上,若是隻有一個Redis節點,sentinel就沒有任何意義
當master節點掛了之後,sentinel會在slave中選擇一個作爲master,並修改它們的配置文件,其餘slave的配置文件也會被修改,好比slaveof屬性會指向新的master
當master節點從新啓動後,它將再也不是master而是作爲slave接收新的master節點的同步數據
sentinel由於也是一個進程有掛掉的可能,因此sentinel也會啓動多個造成一個sentinel集羣
當主從模式配置密碼時,sentinel也會同步將配置信息修改到配置文件中,不準要擔憂。
一個sentinel或sentinel集羣能夠管理多個主從Redis。
sentinel最好不要和Redis部署在同一臺機器,否則Redis的服務器掛了之後,sentinel也掛了
sentinel監控的Redis集羣都會定義一個master名字,這個名字表明Redis集羣的master Redis。
當使用sentinel模式的時候,客戶端就不要直接鏈接Redis,而是鏈接sentinel的ip和port,由sentinel來提供具體的可提供服務的Redis實現,這樣當master節點掛掉之後,sentinel就會感知並將新的master節點提供給使用者。
sentinel模式基本能夠知足通常生產的需求,具有高可用性。可是當數據量過大到一臺服務器存放不下的狀況時,主從模式或sentinel模式就不能知足需求了,這個時候須要對存儲的數據進行分片,將數據存儲到多個Redis實例中,就是下面要講的。
4、cluster模式
sentinel模式的簡介和配置,此處再也不說,參照下面的博客:Redis cluster模式詳解
cluster的出現是爲了解決單機Redis容量有限的問題,將Redis的數據根據必定的規則分配到多臺機器。對cluster的一些理解:
cluster能夠說是sentinel和主從模式的結合體,經過cluster能夠實現主從和master重選功能,因此若是配置兩個副本三個分片的話,就須要六個Redis實例。 由於Redis的數據是根據必定規則分配到cluster的不一樣機器的,當數據量過大時,能夠新增機器進行擴容 這種模式適合數據量巨大的緩存要求,當數據量不是很大使用sentinel便可。