1. 程式人生 > 實用技巧 >Redis安裝部署

Redis安裝部署

Redis安裝部署

redis安裝

1.拷貝redis-5.0.8.tar.gz到伺服器 /opt
2.解壓縮安裝包
tar -zxvf redis-5.0.8.tar.gz
3.安裝c語言環境
yum install gcc-c++ -y
#或者
yum install gcc gcc-c++ openssl* readline* ncurses* zlib* libxml* libjpeg* libpng* libxslt* libtool* -y
4.基本的環境安裝
make
make install
5.到Redis的預設安裝路徑
cd /usr/local/bin
6.設定後臺啟動的配置檔案
mkdir myconfig
cp /opt/redis-5.0.8/redis.conf /usr/local/bin/myconfig
cd myconfig
7.Redis預設不是後臺啟動的,修改配置檔案
vim redis.conf

:wq #退出並儲存
cd ..
8.通過自己的配置檔案啟動Redis服務
redis-server myconfig/redis.conf
9.使用redis-cli進行連線測試
redis-cli -h 127.0.0.1 -p 6379
10.檢視Redis的程序是否開啟
ps -ef|grep redis
11.防火牆開放6379埠
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
#知識點 lsof -i命令檢視開放的埠

12.如何關閉Redis服務
shutdow

redis叢集安裝

本次安裝會使用3臺伺服器,每臺伺服器上搭載3個redis例項,一主二從,按照上面的方式在另外兩臺安裝redis,myconfig中的配置檔案可以跳過。叢集部署,需要另外配置9個配置檔案。這裡一個配置檔案為例,其他類同

地址清單如下:
Master 1.IP:102.102.104.117 Port:7001
Master 2.IP:102.102.104.121 Port:7002
Master 3.IP:102.102.104.123 Port:7003
Slave 4.IP:102.102.104.117 Port:6001
Slave 5.IP:102.102.104.121 Port:6002
Slave 6.IP:102.102.104.123 Port:6003
Slave 7.IP:102.102.104.117 Port:6004
Slave 8.IP:102.102.104.121 Port:6005
Slave 9.IP:102.102.104.123 Port:6006
以IP:102.102.104.117為例,建立資料夾
cd /usr/local/bin
mkdir redis-cluster
mkdir redis-cluster/7001
mkdir redis-cluster/6001
mkdir redis-cluster/6004

以7001下的配置檔案為例:

先拷貝一份初始配置:

cp /opt/redis-5.0.8/redis.conf /usr/local/bin/redis-cluster/7001/redis.conf

然後按下方內容進行修改

bind 0.0.0.0
port 7001
daemonize yes //redis後臺執行
pidfile /var/run/redis_7001.pid
logfile /usr/local/bin/redis-cluster/7001/7001.log
dir /usr/local/bin/redis-cluster/7001
appendonly yes //aof日誌開啟 有需要就開啟,它會每次寫操作都記錄
cluster-enabled yes //開啟叢集 把註釋#去掉
cluster-config-file nodes_7001.conf //叢集的配置 配置檔案首次啟動自動生成 7000,7001,7002
cluster-node-timeout 15000 //請求超時 預設15秒,可自行設定
到對應伺服器啟動各節點伺服器

/usr/local/bin/redis-server /usr/local/bin/redis-cluster/7001/redis.conf
/usr/local/bin/redis-server /usr/local/bin/redis-cluster/6001/redis.conf
/usr/local/bin/redis-server /usr/local/bin/redis-cluster/6004/redis.conf

/usr/local/bin/redis-server /usr/local/bin/redis-cluster/7002/redis.conf
/usr/local/bin/redis-server /usr/local/bin/redis-cluster/6002/redis.conf
/usr/local/bin/redis-server /usr/local/bin/redis-cluster/6005/redis.conf

/usr/local/bin/redis-server /usr/local/bin/redis-cluster/7003/redis.conf
/usr/local/bin/redis-server /usr/local/bin/redis-cluster/6003/redis.conf
/usr/local/bin/redis-server /usr/local/bin/redis-cluster/6006/redis.conf

建立叢集

記得先到各伺服器開放9個防火牆埠

102.102.104.117上輸入下面命令

/usr/local/bin/redis-cli -p 7001 --cluster create 102.102.104.117:7001 102.102.104.121:7002 102.102.104.123:7003 102.102.104.117:6001 102.102.104.121:6002 102.102.104.123:6003 102.102.104.117:6004 102.102.104.121:6005 102.102.104.123:6006 --cluster-replicas 2

--cluster-replicas 2表示一個master待兩個slave

等待叢集搭建

成功了d

叢集驗證

輸入自己的ip和隨意一個埠

/usr/local/bin/redis-cli -h 102.102.104.117 -c -p 7001

進入客戶端後, 通過cluster nodes命令檢視 叢集狀態:

我們存入test資料, 切換節點檢視, 測試通過.大功告成:

info replication也可以看主從關係,還有cluster info指令可以看相關資訊

簡單說一下原理

redis cluster在設計的時候,就考慮到了去中心化,去中介軟體,也就是說,叢集中的每個節點都是平等的關係,都是對等的,每個節點都儲存各自的資料和整個叢集的狀態。每個節點都和其他所有節點連線,而且這些連線保持活躍,這樣就保證了我們只需要連線叢集中的任意一個節點,就可以獲取到其他節點的資料。

Redis 叢集沒有並使用傳統的一致性雜湊來分配資料,而是採用另外一種叫做雜湊槽 (hash slot)的方式來分配的。redis cluster 預設分配了 16384 個slot,當我們set一個key 時,會用CRC16演算法來取模得到所屬的slot,然後將這個key 分到雜湊槽區間的節點上,具體演算法就是:CRC16(key) % 16384。所以我們在測試的時候看到set 和 get 的時候,直接跳轉到了7000埠的節點。

Redis 叢集會把資料存在一個 master 節點,然後在這個 master 和其對應的salve 之間進行資料同步。當讀取資料時,也根據一致性雜湊演算法到對應的 master 節點獲取資料。只有當一個master 掛掉之後,才會啟動一個對應的 salve 節點,充當 master 。

需要注意的是:必須要3個或以上的主節點,否則在建立叢集時會失敗,並且當存活的主節點數小於總節點數的一半時,整個叢集就無法提供服務了。