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