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