高性能高併發網站架構,教你搭建Redis5緩存集羣

1、Redis集羣介紹前端

Redis真的是一個優秀的技術,它是一種key-value形式的NoSQL內存數據庫,由ANSI C編寫,遵照BSD協議、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。 Redis最大的特性是它會將全部數據都放在內存中,因此讀寫速度性能很是好。Redis是基於內存進行操做的,性能較高,能夠很好的在必定程度上解決網站一瞬間的併發量,例如商品搶購秒殺等活動。node

網站承受高併發訪問壓力的同時,還須要從海量數據中查詢出知足條件的數據,須要快速響應,前端發送請求、後端和mysql數據庫交互,進行sql查詢操做,讀寫比較慢,這時候引入Redis ,把從mysql 的數據緩存到Redis 中,下次讀取時候性能就會提升;固然,它也支持將內存中的數據以快照和日誌的形式持久化到硬盤,這樣即便在斷電、機器故障等異常狀況發生時數據也不會丟失,Redis能從硬盤中恢復快照數據到內存中。mysql

Redis 發佈了穩定版本的 5.0 版本,放棄 Ruby的集羣方式,改用 C語言編寫的 redis-cli的方式,是集羣的構建方式複雜度大大下降。Redis-Cluster集羣採用無中心結構,每一個節點保存數據和整個集羣狀態,每一個節點都和其餘全部節點鏈接。redis

爲了保證數據的高可用性,加入了主從模式,一個主節點對應一個或多個從節點,主節點提供數據存取,從節點則是從主節點拉取數據備份,當這個主節點掛掉後,就會有這個從節點選取一個來充當主節點,從而保證集羣不會掛掉。sql

redis-cluster投票:容錯,投票過程是集羣中全部master參與,若是半數以上master節點與master節點通訊超過(cluster-node-timeout),認爲當前master節點掛掉。數據庫

集羣中至少應該有奇數個節點,因此至少有三個節點,每一個節點至少有一個備份節點,因此下面使用6節點(主節點、備份節點由redis-cluster集羣肯定)。6個節點分佈在一臺機器上,採用三主三從的模式。實際應用中,最好用多臺機器,好比說6個節點分佈到3臺機器上,redis在創建集羣時爲自動的將主從節點進行不一樣機器的分配。vim

2、單機redis模式後端

下載源碼redis5.0並解壓編譯緩存

​wget http://download.redis.io/releases/redis-5.0.0.tar.gz
tar xzf redis-5.0.0.tar.gz
cd redis-5.0.0
make

redis前端啓動須要改爲後臺啓動.bash

修改redis.conf文件,將daemonize no -> daemonize yes
vim redis.conf
啓動redis
/www/server/redis/src/redis-server /www/server/redis/redis.conf
查看redis是否在運行 
ps aux|grep redis

  

如今是單機redis模式完成。

3、redis集羣模式:

1.建立6個Redis配置文件

cd /usr/local/
mkdir redis_cluster  //建立集羣目錄
cd redis_cluster
mkdir 7000 7001 7002 7003 7004 7005//分別表明6個節點    
其對應端口 7000 7001 7002 70037004 7005

2.複製配置文件到各個目錄

cp /www/server/redis/redis.conf  /usr/local/redis_cluster/7000/
cp /www/server/redis/redis.conf  /usr/local/redis_cluster/7001/
cp /www/server/redis/redis.conf  /usr/local/redis_cluster/7002/
cp /www/server/redis/redis.conf  /usr/local/redis_cluster/7003/
cp /www/server/redis/redis.conf  /usr/local/redis_cluster/7004/
cp /www/server/redis/redis.conf  /usr/local/redis_cluster/7005/ 

 3.分別修改配置文件

vim /usr/local/redis_cluster/7000/redis.conf
vim /usr/local/redis_cluster/7001/redis.conf
vim /usr/local/redis_cluster/7002/redis.conf
vim /usr/local/redis_cluster/7003/redis.conf
vim /usr/local/redis_cluster/7004/redis.conf
vim /usr/local/redis_cluster/7005/redis.conf

 以下

port 7000 #端口
cluster-enabled yes #啓用集羣模式
cluster-config-file nodes_7000.conf #集羣的配置 配置文件首次啓動自動生成
cluster-node-timeout 5000 #超時時間 5秒
appendonly yes #aof日誌開啓 它會每次寫操做都記錄一條日誌
daemonize yes #後臺運行
protected-mode no #非保護模式
pidfile  /var/run/redis_7000.pid
//下面能夠不寫
#若設置密碼,master和slave需同時配置下面兩個參數:
masterauth "jijiji" #鏈接master的密碼
requirepass "jijiji" #本身的密碼 

cluster-config-file,port,pidfile對應數字

4.啓動節點

cd /www/server/redis/src/
./redis-server /usr/local/redis_cluster/7000/redis.conf
./redis-server /usr/local/redis_cluster/7001/redis.conf
./redis-server /usr/local/redis_cluster/7002/redis.conf
./redis-server /usr/local/redis_cluster/7003/redis.conf
./redis-server /usr/local/redis_cluster/7004/redis.conf
./redis-server /usr/local/redis_cluster/7005/redis.conf

 查看redis運行

ps aux|grep redis

 

5.啓動集羣

/www/server/redis/src/redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005  --cluster-replicas 1

 這裏使用的命令是create,由於咱們要建立一個新的集羣。 該選項--cluster-replicas 1意味着咱們但願每一個建立的主服務器都有一個從服。 

 

輸入yes

至此,Reids5 集羣搭建完成。

6.檢查Reids5集羣狀態

能夠執行redis-cli --cluster check host:port檢查集羣狀態slots詳細分配。 

redis-cli --cluster info 127.0.0.1:7000

7.中止Reids5集羣

(1).由於Redis能夠妥善處理SIGTERM信號,因此直接kill -9也是能夠的,能夠同時kill多個,而後再依次啓動。

kill -9 PID PID PID

(2).redis5 提供了關閉集羣的工具,修改文件: /www/server/redis/utils/create-cluster/create-cluster

端口PROT設置爲6999,NODES爲6,工具會生成 7000-7005 六個節點 用於操做。

修改後,執行以下命令關閉集羣:

/www/server/redis/utils/create-cluster/create-cluster stop  

從新啓動集羣:

/www/server/redis/utils/create-cluster/create-cluster start 

8.幫助信息

執行redis-cli --cluster help,查看更多幫助信息

redis-cli --cluster help
相關文章
相關標籤/搜索