Linux下Redis安裝及集羣搭建

Linux下Redis安裝及集羣搭建

 

Redis版本

Linux所有版本:http://download.redis.io/releases/

Windows所有版本:https://github.com/MicrosoftArchive/redis/releases

 

Linux下安裝

注:由於redis是由C實現的,所以需要gcc來進行編譯,執行下面的命令:

yum install -y gcc g++ gcc-c++ make

/*這是在linux聯網的情況下,沒有聯網的情況下需要下載一些rpm包,安裝gcc,這塊自行百度。*/

 

1.將下載的tar包上傳到服務器,或者通過wget命令進行下載。

tar -zxvf **.tar.gz 命令進行解壓

[[email protected] redis]# tar -zxvf redis-5.0.5.tar.gz

 

2.進入解壓後目錄:

cd redis-5.0.5

然後輸入make:

[[email protected] redis-5.0.5]# make

安裝完c++編譯器後 再次 make 若報此錯

執行 make clean 後再次 執行 make ,再檢查redis-x.x.x/src 目錄下有沒有 redis-server、redis-cli 和 /usr/local/bin下有沒有

若無,則把redis-x.x.x 文件夾刪掉,再解壓一次redis的壓縮包,cd進入 redis-x.x.x 中, make 一下 即可

如果make 出現如下情況,輸入make MALLOC=libc

3.啓動redis服務

make完後 redis-2.8.17目錄下會出現編譯後的redis服務程序redis-server,還有用於測試的客戶端程序redis-cli,兩個程序位於安裝目錄 src 目錄下:

下面啓動redis服務.

cd src

./redis-server

注意這種方式啓動redis 使用的是默認配置。也可以通過啓動參數告訴redis使用指定配置文件使用下面命令啓動

cd src

./redis-server ../redis.conf

 

SpringBoot連接Redis服務問題

問題描述:SpringBoot連接Redis服務出現DENIED Redis is running in protected mode because protected mode is enabled

 解決方法:是說Redis服務處於保護模式,我們需要修改配置文件redis.conf。將NETWORK下的protected-mode yes修改

爲protected-mode no,將bind 127.0.0.1 給註釋掉

然後重啓服務(./redis-server ../redis.conf)

設置redis後臺啓動,在redis.conf中將daemonize設置爲daemonize yes

 

集羣搭建

第一步:新建文件夾

在第一臺機器的/usr/local下創建文件夾redis‐cluster,然後在其下面分別創建文件夾如下

(1)mkdir ‐p /usr/local/redis‐cluster

(2)mkdir 8001 8002 8003 8004 8005  8006

 

第二步:複製配置文件,修改配置參數

把之前的redis.conf配置文件copy到8001下,修改如下內容:

(1)daemonize yes

(2)port 8001(分別對每個機器的端口號進行設置)

(3)dir /usr/local/redis‐cluster/8001/(指定數據文件存放位置,必須要指定不同的目錄位置,不然會丟失數據)

(4)cluster‐enabled yes(啓動集羣模式)

(5)cluster‐config‐file nodes‐8001.conf(集羣節點信息文件,這裏800x最好和port對應上)

(6)cluster‐node‐timeout 5000

(7)# bind 127.0.0.1(bind綁定的是自己機器網卡的ip,如果有多塊網卡可以配多個ip,代表允許客戶端通過機器的哪些網卡ip去訪問,內網一般可以不配置bind,註釋掉即可)

(8) protected‐mode no (關閉保護模式)

(9)appendonly yes

   如果要設置密碼需要增加如下配置:

(10)requirepass chenxuan(設置redis訪問密碼)

(11)masterauth chenxuan(設置集羣節點間訪問密碼,跟上面一致)

 

第三步:修改集羣所有配置

把修改後的配置文件,copy到8002,修改第2、3、5項裏的端口號

 

第四步:啓動redis

按照操作替換所有配置,然後啓動redis

啓動redis服務,不同的端口號就不同的redis服務

/opt/redis/redis-5.0.5/src/redis-server /usr/local/redis-cluster/8001/redis.conf

 

第五步:創建集羣

創建集羣 (‐a訪問服務端密碼,-cluster表示開啓集羣模式, create表示創建 --cluster-replicas:集羣的redis服務們)

例:/opt/redis/redis-5.0.5/src/redis-cli -a chenxuan --cluster create --cluster-replicas 1 192.168.1.101:8001 192.168.1.101:8002 192.168.1.101:8003 192.168.1.101:8004 192.168.1.101:8005 192.168.1.101:8006

一般情況下會將前幾個節點作爲主節點,比如此時的8001,8002,8003就應該是主節點

 

 

第六步:登錄集羣,查看集羣相關信息

登錄集羣中任意一個節點,連接任意一個客戶端即可:./redis‐cli ‐c ‐h ‐p (‐a訪問服務端密碼,‐c表示集羣模式,指定ip地址和端口號)

例:/opt/redis/redis-5.0.5/src/redis-cli -a chenxuan -c -h 192.168.1.101 -p 8001

cluster info(查看集羣信息)

cluster nodes(查看節點列表)

最開頭的那一串是這個節點的id,master 的是主節點 , slave的是子節點,子節點後面的那一串是主節點的id

默認一個redis集羣會分16384個分片,比如下圖的數據空間分片:一共三個主節點,那就是每個節點的數據空間分片大致爲(16383/3 )=5461個分片。 端口是8001的redis的空間是0-5460,端口是8002的redis的空間是5461-10922,端口是8003的redis的空間是10923-16383。如果給redis分8G的內存的話,那麼一個分片的內存就是0.5M,每個節點大概就是2730.5M的內存。

到這裏我們的集羣就已經搭建完畢了,這個時候就可以正常的使用redis了。

 

第八步:關閉集羣

關閉集羣的話,就要逐一關閉了

例:/opt/redis/redis-5.0.5/src/redis-cli -a chenxuan -c -h 192.168.1.101 -p 8002 shutdown