一:介紹html
公司用到的redis框架,主要分爲cluster的緩存集羣和sentinel中的哨兵主從。這種的選用方式通常須要更具業務場景來作區分,兩種框架的配置圖爲:右圖爲哨兵主從框架和cliuster的集羣框架。sentienl的集羣框架,適用於redis的key值都屬於熱點數據,訪問量大,而且redis的key值數量不一樣,這樣在一個key的訪問量巨大的時候,能夠分流到其餘從的機器上。而集羣則適用於key值較多的環境,其策略上,經過對key的一個特定算法,落到某一天固定的機器上,提供了key的查詢速度。相似於數據庫的分庫分表。redis
二: 搭建單臺redis服務算法
不管是從那種框架,都須要先搭建redis單臺服務,並在此基礎上進行擴展數據庫
在redis官網下載 redis-4.0.10.tar.gz 並解壓 指定的目錄,我在解壓以前 先建了一個 redis目錄 將都在這個目錄下操做vim
進入到 redis/redis-4.0.9 中,對安裝redis緩存
執行 服務器
若是出現錯誤,能夠先安裝 gcc ,apt-get install gccapp
等編譯成功後,進入/redis/redis-4.0.9/src/ 執行 ./redis-server 中便可框架
其餘的詳細安裝過程,網上博客比較多,就很少說測試
三:主從服務搭建
搭建主從以前,須要先看一下 http://www.javashuo.com/article/p-mguerusx-ee.html 對理解主從和哨兵有很好對幫助
因爲咱們只有單臺機器,因此這裏搭建對是僞主從,經過調整修改端口號,來達到啓動不一樣對redis服務
因此咱們只須要修改vim /redis/redis-4.0.9/redis.conf 便可,可是爲了方便起見,咱們複製這個文件,創建三個不一樣對conf
等conf配置完成,咱們只須要經過 ./redis-server redis-n.conf 就能夠啓不一樣的redis服務
3.1 修改配置
先複製 cp /redis/redis-4.0.9/redis.conf /redis/master-slave/redis-mater-6369.conf 和 redis-slave-6368.conf 、redis-slave-6367.conf,其結構以下所示
主redis-master-6369.conf的修復:
# 注視掉 這個,就能夠經過ip遠程訪問
# bind 127.0.0.1
port 6369
requirepass "123456" //修改redis的密碼
pidfile "redis/master-slave/redis-pid/redis_6369.pid"
從服務器 redis-slave-6368.conf
# bind 127.0.0.1
port 6368
pidfile "redis/master-slave/redis-pid/redis_6368.pid"
requirepass "123456" //修改redis的密碼
slaveof 127.0.0.1 6369 //主服務器的地址
masterauth "123456" //主redis的密碼
從服務器 redis-slave-6367.conf 和上面的同樣 就不作介紹了
3.2 啓動服務器
爲了方便啓動,經過書寫一個腳本,一鍵啓動,啓動的順序是先啓動主redis 在啓動從redis,並定向輸出日誌到log裏面
chmod +x 這個文件 變成可執行文件
3.3 查看啓動狀態
經過 redisl-cli -h 127.0.0.1 -a 1234567 -p 6369 鏈接redis 在經過info查看,能夠看到6369是master 另外兩個是從服務器,此時主從服務器搭建完成,
出現這種錯誤
搭建好以後 能夠經過set get一些key值來檢測狀態
四,哨兵的搭建
哨兵的搭建和步驟三比較相似
在redis/redis-4.0.9 的文件中 有一個 sentienl.conf 也是隻須要把這個文件複製成兩份,進行修改便可
修改的內容以下
sentienl-26369.conf 、sentienl-26368.conf 兩個哨兵
port 26369 //修改端口
protected-mode no //關閉保護默認,能夠遠程訪問
sentinel monitor mymaster 172.20.139.237 6369 2
//監控主節點的IP地址端口,sentinel監控的master的名字叫作mymaster,2表明,當集羣中有2個sentinel認爲master死了時,才能真正認爲該master已經不可用了
sentinel auth-pass mymaster 12345678 //哨兵鏈接主redis的密碼
sentinel config-epoch mymaster 2 //故障轉移時最多能夠有2從節點同時對新主節點進行數據同步
sentinel leader-epoch mymaster 2
sentinel failover-timeout mymasterA 180000 //故障轉移超時時間180s,
五,啓動哨兵
修改剛剛啓動主從的命令,加入啓動哨兵的命令
檢測哨兵是否成功,經過ps -ef | grep "redis" 查看redis的啓動情況
這個時候 強行 kill -9 9146 殺掉以前的主redis 節點,也是就是6369的節點
你會發現,另外的以前的兩個從節點,6367 或者 6368 被選舉成主節點
六:經過 redis 來測試鏈接
參考博客:
http://www.javashuo.com/article/p-mguerusx-ee.html