centos7下redis-6.0.5安裝


1、下載安裝包

進入官網(https://redis.io/download)下載指定版本的安裝包,這里下載的是最新的redis-6.0.5.tar.gz:

1 wget http://download.redis.io/releases/redis-6.0.5.tar.gz

2、解壓壓縮文件

1 [developer@iZuf6ai62xce7yu53epv2jZ soft]$ tar -zxvf redis-6.0.5.tar.gz
2 [developer@iZuf6ai62xce7yu53epv2jZ soft]$ cd redis-6.0.5/

3、編譯安裝redis

在編譯安裝前,查看系統gcc環境的版本(gcc -v),centos7默認安裝的版本為4.8.5,該版本過低會無法進行安裝,需要升級gcc到6以上。

1 [developer@iZuf6ai62xce7yu53epv2jZ soft] sudo yum -y install centos-release-scl
2 [developer@iZuf6ai62xce7yu53epv2jZ soft] sudo yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
3 [developer@iZuf6ai62xce7yu53epv2jZ soft] sudo scl enable devtoolset-9 bash
4 [developer@iZuf6ai62xce7yu53epv2jZ soft] sudo echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
5 [developer@iZuf6ai62xce7yu53epv2jZ soft] gcc -v

 gcc依賴安裝完成后,進入redis解壓目錄進行安裝:

 1 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo make && sudo make install PREFIX=/usr/local/redis-6.0.5
 2 
 3 make[1]: Leaving directory '/java/soft/redis-6.0.5/src'
 4 cd src && make install
 5 make[1]: Entering directory '/java/soft/redis-6.0.5/src'
 6     CC Makefile.dep
 7 
 8 Hint: It's a good idea to run 'make test' ;)
 9 
10     INSTALL install
11     INSTALL install
12     INSTALL install
13     INSTALL install
14     INSTALL install
15 make[1]: Leaving directory '/java/soft/redis-6.0.5/src'

 進入安裝目錄,啟動服務查看redis是否安裝成功:

1 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ cd /usr/local/redis-6.0.5/bin/
2 [developer@iZuf6ai62xce7yu53epv2jZ bin]$ ./redis-server
3 22622:C 19 Jun 2020 11:30:41.130 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
4 22622:C 19 Jun 2020 11:30:41.130 # Redis version=6.0.5, bits=64, commit=00000000, modified=0, pid=22622, just started

4、調整配置

更改redis一些必要的配置,首先將解壓目錄下的redis.conf文件拷貝到安裝目錄下:

1 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo cp /java/soft/redis-6.0.5/redis.conf /usr/local/redis-6.0.5/

修改其中的一些必要配置:

daemonize no --> yes   讓redis啟動的時候以后台服務的形式

requirepass foobared --> 設置redis的連接密碼

port 6379    --> redis的啟動端口,默認為6379

后台啟動查看:

1 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ cd ..
2 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ ./bin/redis-server redis.conf
3 22711:C 19 Jun 2020 11:38:00.347 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
4 22711:C 19 Jun 2020 11:38:00.347 # Redis version=6.0.5, bits=64, commit=00000000, modified=0, pid=22711, just started
5 22711:C 19 Jun 2020 11:38:00.347 # Configuration loaded
6 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ ps -ef|grep redis
7 develop+ 22712     1  0 11:37 ?        00:00:00 ./bin/redis-server 127.0.0.1:6379

5、設置服務

將redis做成服務,並設置成開機啟動:

 1 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo vim /etc/systemd/system/redis.service
 2 [Unit]
 3 Description=redis-server
 4 After=network.target
 5 
 6 [Service]
 7 Type=forking
 8 ExecStart=/usr/local/redis-6.0.5/bin/redis-server /usr/local/redis-6.0.5/redis.conf
 9 PrivateTmp=true
10 
11 [Install]
12 WantedBy=multi-user.target
13 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo systemctl daemon-reload
14 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo systemctl start redis.service
15 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ ps -ef|grep redis
16 root     22815     1  0 11:47 ?        00:00:00 /usr/local/redis-6.0.5/bin/redis-server 127.0.0.1:6379
17 
18 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo  systemctl enable redis.service
19 Created symlink /etc/systemd/system/multi-user.target.wants/redis.service → /etc/systemd/system/redis.service.

 添加環境變量,讓可以在任意地方使用redis命令:

1 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo vim /etc/profile
2 # redis
3 PATH=$PATH:/usr/local/redis-6.0.5/bin
4 export PATH
5 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ source /etc/profile

 6、創建集群目錄

創建redis集群至少需要3個節點,而每個節點至少有一個備份節點,所以至少需要創建6個節點。在安裝目錄下創建6個目錄7000,7001,7002,7003,7004,7005,然后將redis.conf文件復制到7000目錄下,並修改:

1 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo mkdir redis-cluster
2 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo mkdir -p redis-cluster/7000
3 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo mkdir -p redis-cluster/7001
4 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo mkdir -p redis-cluster/7002
5 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo mkdir -p redis-cluster/7003
6 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo mkdir -p redis-cluster/7004
7 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo mkdir -p redis-cluster/7005
8 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo cp redis.conf redis-cluster/7000/
9 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo vim redis-cluster/7000/redis.conf

 將redis.conf中的配置按照以下進行調整:

 1 #后台啟動
 2 daemonize yes 
 3 pidfile /usr/local/redis-6.0.5/redis-cluster/redis_7000.pid
 4 # 和文件夾對應的端口號
 5 port 7000
 6 # 注釋去掉
 7 cluster-enabled yes
 8 # 注釋去掉,並將名稱后面改成對應端口號
 9 cluster-config-file nodes-7000.conf
10 # 節點通訊時間
11 cluster-node-timeout 15000
12 # 持久化方式
13 appendonly yes
14 # 集群密碼,自行進行調整
15 requirepass 123456
16 # redis集群數據庫和日志存儲目錄
17 dir /usr/local/redis-6.0.5/redis-cluster/

 將7000下的redis.conf分別拷貝到其他幾個目錄下,並將配置文件里面的對應端口號改成文件夾的端口號

7、redis集群腳本

redis集群需要啟動的比較多,為了方便,建立一個腳本自動啟動和關閉redis集群,並設置開機啟動:

1 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo vim /etc/init.d/redisc

 然后將下面的內容拷貝到文件中:

 1 #!/bin/sh
 2 # chkconfig: 2345 80 90
 3 #
 4 # Simple Redis init.d script conceived to work on Linux systems
 5 # as it does use of the /proc filesystem.
 6 
 7 REDISPORT1=7001
 8 REDISPORT2=7002
 9 REDISPORT3=7003
10 REDISPORT4=7004
11 REDISPORT5=7005
12 REDISPORT6=7000
13 PASSWD=123456
14 EXEC=/usr/local/redis-6.0.5/bin/redis-server
15 CLIEXEC=/usr/local/redis-6.0.5/bin/redis-cli
16 PIDFILE=/usr/local/redis-6.0.5/redis-cluster/redis_${REDISPORT1}.pid
17 
18 CONF1="/usr/local/redis-6.0.5/redis-cluster/${REDISPORT1}/redis.conf"
19 CONF2="/usr/local/redis-6.0.5/redis-cluster/${REDISPORT2}/redis.conf"
20 CONF3="/usr/local/redis-6.0.5/redis-cluster/${REDISPORT3}/redis.conf"
21 CONF4="/usr/local/redis-6.0.5/redis-cluster/${REDISPORT4}/redis.conf"
22 CONF5="/usr/local/redis-6.0.5/redis-cluster/${REDISPORT5}/redis.conf"
23 CONF6="/usr/local/redis-6.0.5/redis-cluster/${REDISPORT6}/redis.conf"
24 
25 case "$1" in
26     start)
27         if [ -f $PIDFILE ]
28         then
29                 echo "$PIDFILE exists, process is already running or crashed"
30         else
31                 echo "Starting Redis cluster server..."
32                 $EXEC $CONF1 &
33                 $EXEC $CONF2 &
34                 $EXEC $CONF3 &
35                 $EXEC $CONF4 &
36                 $EXEC $CONF5 &
37                 $EXEC $CONF6 &
38                 echo "啟動成功..."
39         fi
40         ;;
41     stop)
42         if [ ! -f $PIDFILE ]
43         then
44                 echo "$PIDFILE does not exist, process is not running"
45         else
46                 PID=$(cat $PIDFILE)
47                 echo "Stopping ..."
48                 $CLIEXEC -p $REDISPORT1 -a $PASSWD shutdown
49                 $CLIEXEC -p $REDISPORT2 -a $PASSWD shutdown
50                 $CLIEXEC -p $REDISPORT3 -a $PASSWD shutdown
51                 $CLIEXEC -p $REDISPORT4 -a $PASSWD shutdown
52                 $CLIEXEC -p $REDISPORT5 -a $PASSWD shutdown
53                 $CLIEXEC -p $REDISPORT6 -a $PASSWD shutdown
54                 while [ -x /proc/${PID} ]
55                 do
56                     echo "Waiting for Redis cluster to shutdown ..."
57                     sleep 1
58                 done
59                 echo "Redis cluster stopped"
60         fi
61         ;;
62     *)
63         echo "Please use start or stop as first argument"
64         ;;
65 esac

 注冊成系統服務並開機啟動:

1 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo chkconfig --add redisc
2 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo chkconfig redisc on
3 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo chmod a+x /etc/init.d/redisc

 redis服務命令:

啟動:sudo service redisc start

關閉:sudo service redisc stop

8、創建集群

直接使用redis-cli命令進行創建:

 1 [developer@iZuf6ai62xce7yu53epv2jZ redis-6.0.5]$ sudo ./bin/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 -a [password] --cluster-replicas 1
 2 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
 3 >>> Performing hash slots allocation on 6 nodes...
 4 Master[0] -> Slots 0 - 5460
 5 Master[1] -> Slots 5461 - 10922
 6 Master[2] -> Slots 10923 - 16383
 7 Adding replica 127.0.0.1:7004 to 127.0.0.1:7000
 8 Adding replica 127.0.0.1:7005 to 127.0.0.1:7001
 9 Adding replica 127.0.0.1:7003 to 127.0.0.1:7002
10 >>> Trying to optimize slaves allocation for anti-affinity
11 [WARNING] Some slaves are in the same host as their master
12 M: dcc746a24ece0a16e14a1dfbd1f238ae41243bc7 127.0.0.1:7000
13    slots:[0-5460] (5461 slots) master
14 M: bc99f7f7dabe0403edb3bb59e78bf5feba7c9e96 127.0.0.1:7001
15    slots:[5461-10922] (5462 slots) master
16 M: 1f81a3b115c6d99d8bd6b73c24b20e1a32885285 127.0.0.1:7002
17    slots:[10923-16383] (5461 slots) master
18 S: 7ed93dd436c2829d92dbc490fcd48ea615a85665 127.0.0.1:7003
19    replicates 1f81a3b115c6d99d8bd6b73c24b20e1a32885285
20 S: 58e374fe2e59e450dae997ea5ad59b2419fb6662 127.0.0.1:7004
21    replicates dcc746a24ece0a16e14a1dfbd1f238ae41243bc7
22 S: cb783661fb23ebae70c9a5916756d84f5fdb95f6 127.0.0.1:7005
23    replicates bc99f7f7dabe0403edb3bb59e78bf5feba7c9e96
24 Can I set the above configuration? (type 'yes' to accept): yes 25 >>> Nodes configuration updated
26 >>> Assign a different config epoch to each node
27 >>> Sending CLUSTER MEET messages to join the cluster
28 Waiting for the cluster to join
29 .
30 >>> Performing Cluster Check (using node 127.0.0.1:7000)
31 M: dcc746a24ece0a16e14a1dfbd1f238ae41243bc7 127.0.0.1:7000
32    slots:[0-5460] (5461 slots) master
33    1 additional replica(s)
34 S: 7ed93dd436c2829d92dbc490fcd48ea615a85665 127.0.0.1:7003
35    slots: (0 slots) slave
36    replicates 1f81a3b115c6d99d8bd6b73c24b20e1a32885285
37 S: cb783661fb23ebae70c9a5916756d84f5fdb95f6 127.0.0.1:7005
38    slots: (0 slots) slave
39    replicates bc99f7f7dabe0403edb3bb59e78bf5feba7c9e96
40 M: bc99f7f7dabe0403edb3bb59e78bf5feba7c9e96 127.0.0.1:7001
41    slots:[5461-10922] (5462 slots) master
42    1 additional replica(s)
43 S: 58e374fe2e59e450dae997ea5ad59b2419fb6662 127.0.0.1:7004
44    slots: (0 slots) slave
45    replicates dcc746a24ece0a16e14a1dfbd1f238ae41243bc7
46 M: 1f81a3b115c6d99d8bd6b73c24b20e1a32885285 127.0.0.1:7002
47    slots:[10923-16383] (5461 slots) master
48    1 additional replica(s)
49 [OK] All nodes agree about slots configuration.
50 >>> Check for open slots...
51 >>> Check slots coverage...
52 [OK] All 16384 slots covered.

 說明:1、如果沒有設置密碼。則不需要添加-a [password]

      2、如果是在不同服務器之間開啟集群,則需要使用ip地址進行集群創建,而不是127.0.0.1,同樣的,對應的redis.conf中的bind ip也需要換成對應的ip地址

      3、集群防火牆的開通除了需要開通上面的端口外,還需要開通集群總線的端口,集群總線端口為配置端口+10000。如果沒有開通集群總線端口,在創建集群時,會一直Waiting for the cluster to join。

      4、低版本redis下,創建集群需要使用redis-trib.rb工具,如果redis-cli沒有該命令,請使用redis-trib工具進行創建

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM