1 哨兵搭建的注意事項
1.1 配置檔案還原
1.1.1 哨兵的配置檔案介紹
說明:
哨兵啟動時需要依賴2個配置檔案
redis.conf
sentinel.conf
1.搭建redis時redis必須實現主從結構 並且在配置檔案中已經寫入.
2.如果主從搭建出現問題.需要重新拷貝新的配置檔案 再次配置
3.哨兵配置檔案出錯
1.先配置單臺的哨兵
2.先拷貝單臺哨兵的配置檔案.
3.根據自己的需要將配置檔案修改哨兵的個數/序列號
4.重啟哨兵 6379 6380 6381
2 Redis中的持久化
2.1 RDB模式
說明:RDB模式是redis中預設的持久化方式.redis中預設每15分鐘持久化一次.將redis中記憶體的資訊寫入到.rdb結尾的檔案中.當redis節點出現當機/斷電.當redis再次啟動時先讀取rdb持久化檔案,恢復記憶體資料.
2.1.1 redis的單位
2.1.2 redis中預設的持久化策略
說明:save 規定的時間 更新的次數(set)
save 900 1 如果redis在15分鐘內只執行一次set操作.則進行資料持久化.
save 300 10 如果redis在5分鐘內執行了10次set操作,則進行持久化
save 60 10000 …
總結:根據save的語法,可以根據自身的需要調整redis的預設的持久化策略.
2.1.3 save 和 bgsave
說明:如果想通過自己手動的持久化檔案,需要執行save或bgsave達到持久化的目的.
用法:
如果使用save命令持久化,則首先會重新開啟一個執行緒,主動執行持久化操作.這時所有的redis操作都會阻塞.直到持久化操作完成.
如果使用bgsave命令.則不會造成阻塞的現象.會新開啟一個執行緒.該執行緒的工作有點類似於gc.不能保證持久化操作立即執行.
2.1.4 持久化檔案的名稱和路徑
1.持久化檔案的名稱
2.路徑可以手動的指定
3.問題:由於redis關機,當再次啟動時發現全部的redis資訊都相同?老師為什麼??????
說明:由於分片的操作.3臺redis的持久化檔名稱和路徑都是相同的.當redis啟動時會讀取持久化檔案恢復資料,.所有導致3臺redis的資料是系統的!!!
總結:不同的redis.持久化檔名稱必須不同
2.1.5 RDB持久化的總結
- redis中預設的持久化策略
- redis中可以手動的進行持久化 sava bgsave
- 手動的修改redis的持久化策略 save 時間 set次數
- redis的持久化檔名稱必須不同
- RDB檔案在固定的時間間隔持久化資料,不能保證實時持久化
2.2 AOF持久化
2.2.1 AOF介紹
說明:AOF策略能夠滿足實時持久化的要求,但是消耗的效能較高(rdb).AOF持久化策略模式是關閉的.如果需要開啟只需要將appendonly yes.當開啟了AOF持久化策略後,RBD模式將不起作用.並且生成持久化檔案appendonly.aof
AOF的執行的原理:
當redis出現當機或者斷電的現象,這時當redis重新啟動時.這時會首先檢查AOF檔案.進行資料的恢復.
2.2.2 AOF檔案預設的持久化策略
always: 實時備份.這時的效能會很低
everysec: 每秒進行一次資料持久化.效率略低於rdb
no: 將具體備份的時間交給作業系統決定.
2.2.3 AOF的總結
- 能夠實現實時備份
- 對於資料完整性要求較高時使用AOF備份
- AOF的效率略低於RDB
- 根據不用的公司需要選擇不同的持久化方式
2.3 Redis中的記憶體策略
2.3.1 Redis是如何維護記憶體
說明:redis中可以手動的設定最大的記憶體,可以用10mb/10gb這樣的單位進行設定.如果將記憶體設定為10M.隨著時間的推移,記憶體空間會面臨存滿的現象.redis會根據自身的記憶體策略進行維護
2.3.2 記憶體策略
# volatile-lru -> 從已經設定過期時間的資料中,選擇最近最少使用的資料進行刪除
# allkeys-lru -> 從全部資料中挑選出最近最少使用的資料進行刪除
# volatile-random -> 從已經設定的過期時間的資料中,進行隨機淘汰
# allkeys-random -> 從全部資料中進行隨機淘汰
# volatile-ttl -> 從設定了過期時間的資料集中,選擇馬上就要過期的資料進行釋放操作
# noeviction -> redis的預設策略.不會刪除資料,會直接返回錯誤資訊.在做寫操作時
說明:可以修改預設記憶體策略.建議使用lur演算法和TTL演算法
如果採用lur演算法則使用allkeys-lru
說明:如果引用演算法將記憶體的資料進行刪除時,lru
maxmemory-samples 1-10 10的刪除的可靠性更好,但是效能是最低的
3的速度是最快的,但是效果不是特別的理想.
預設為5
2.4 搭建redis叢集
2.4.1 哨兵的缺點
1.哨兵當機後將直接影響整個服務
2.搭建redis伺服器,一個服務對應三個哨兵,那麼會導致哨兵的數量比伺服器都多,維護不易.
2.4.2 哨兵的優點
說明:
哨兵可以實現redis的高可用.分片技術可以將記憶體資料交給多臺機器維護.效能上更好.
矛盾點:
哨兵缺少了分片的記憶體分散.
分片缺少了哨兵的高可用
2.5 Redis叢集
2.5.1 叢集的優點
說明:
- 叢集可以實現內部的高可用
- 叢集通過多臺的主機共同為記憶體空間
- 叢集部署時無需手動掛載主從.程式自動維護.
- 教學中配置3主2從一共9臺機器
2.6 Redis叢集的搭建
2.6.1 建立7000-7008資料夾
說明:配置前將全部的redis服務關閉,之後重新拷貝新的配置檔案重新配置
mkdir cluster
[root@localhost redis-3.2.8]# cp redis.conf cluster/
redis-7000.conf
建立多個資料夾儲存redis資訊.將配置檔案移動到7000資料夾下
2.6.2 編輯配置檔案
- 將繫結IP註釋
- 關閉保護模式
- 修改埠號
- 開啟後臺啟動
- 修改PID路徑
- 修改持久化檔案的名稱
- 修改持久化檔案的目錄
- 修改記憶體策略
- 開啟叢集
- 修改叢集節點資訊
2.6.3 複製配置檔案到指定資料夾下
2.6.4 修改檔案標號
:%s/7000/7001/g
7000表示原有檔名
7001新檔名稱
之後儲存退出:wq
分別修改7001-7008的配置檔案
2.6.5 批量啟動
關閉防火牆
service iptables stop
2.6.6 叢集的部署
說明:叢集啟動時需要依賴工具外掛 ruby
啟動命令:
./src/redis-trib.rb create --replicas 2 192.168.220.132:7000 192.168.220.132:7001 192.168.220.132:7002 192.168.220.132:7003 192.168.220.132:7004 192.168.220.132:7005 192.168.220.132:7006 192.168.220.132:7007 192.168.220.132:7008
輸入yes
說明:
如果出現上述的資訊恭喜你叢集搭建成功!!!
2.7 Redis叢集Spring管理
2.7.1 修改redis.properties檔案
2.7.2 編輯Spring配置檔案
<!-- jedis 配置--> <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig" > <!--最大空閒數--> <property name="maxIdle" value="${redis.maxIdle}" /> <!--最大建立連線等待時間--> <property name="maxWaitMillis" value="${redis.maxWait}" /> <!--是否在從池中取出連線前進行檢驗,如果檢驗失敗,則從池中去除連線並嘗試取出另一個--> <property name="testOnBorrow" value="${redis.testOnBorrow}" /> <property name="maxTotal" value="${redis.maxTotal}" /> <property name="minIdle" value="${redis.minIdle}" /> </bean> <bean id="jedisCluster" class="com.jt.common.util.RedisCluster" > <property name="addressConfig"> <value>classpath:/properties/redis.properties</value> </property> <property name="addressKeyPrefix" value="redis.cluster" /> <!-- 屬性檔案裡 key的字首 --> <property name="timeout" value="${redis.timeout}" /> <property name="maxRedirections" value="6" /> <property name="genericObjectPoolConfig" ref="poolConfig" /> </bean>
2.7.3 編輯工具類方法
說明:工具類實現工廠介面和InitializingBean
2.先建立物件
- 通過工廠建立物件
2.7.4 業務層呼叫
2.7.5 修改哨兵依賴配置