环境说明:Win10 Centos7 Linux
在本人学习redis单机和集群搭建的时候,也搜索了很多篇博客,总的来说,很多不适合初学者,说的不详细,不明确,同样的操作结果出错,也没有解决办法,排版不好,导致一个符号或者字母 拷贝出错,所以博主写这篇博客,新手可以一目了然,按照方法操作就可以。开始讲解
Redis 单机安装,比较简单,我不是很推荐使用yum install 下载redis,当然方法很多种,可以用自己熟悉的,我这面说的是下载 .tar的方式。
因为Redis是C语言开发的,所有第一步在Linux下要先命令行安装
yum -y install gcc-c++
先创建一个文件夹,任意位置
cd /var
mkdir redis
cd /var/redis
下载redis-5.0.5.tar.gz 到你刚刚创建的redis文件夹中
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
解压
tar -xzf redis-5.0.5.tar.gz
进入
cd redis-5.0.5/
编译
make && make install
编译成功后,可使用ll 查看文件分类
ll
开启服务前先修改一下redis.conf
daemonize no 修改成 yes 表示后台运行
开启服务
./src/redis-server ./redis.conf
看到返回 就代表启动成功;
58316:C 15 Aug 2019 17:19:29.308 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
58316:C 15 Aug 2019 17:19:29.308 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=58316, just started
58316:C 15 Aug 2019 17:19:29.308 # Configuration loaded
使用redis-cli 测试一下
./src/redis-cli
返回:127.0.0.1:6379> 代表成功
(说明一点,在之后的使用中,如果出现readonly或者其它写入的问题,先重启保证能使用再去查找原因)
127.0.0.1:6379> shutdown
再重新执行
./src/redis-server ./redis.conf
启动成功,测试一下
127.0.0.1:6379> set name xiaobei
OK
127.0.0.1:6379> get name
"xiaobei"
127.0.0.1:6379> del name
(integer) 1
到这单机版redis 就已经安装好了
开始搭建redis集群
/var/redis/redis-5.0.5/src
mkdir redis-cluster
cd redis-cluster
开始拷贝redis.conf到 redis-cluster,
先执行
mkdir 7000 7001 7002 7003 7004 7005
再执行
cp redis.conf ../../redis-cluster/7000
cp redis.conf ../../redis-cluster/7001
cp redis.conf ../../redis-cluster/7002
cp redis.conf ../../redis-cluster/7003
cp redis.conf ../../redis-cluster/7004
cp redis.conf ../../redis-cluster/7005
然后开始修改每个redis.conf,如果是可视化的,建议直接去找到对应的文件修改,那样快一点
vi redis.conf
按 i 是允许插入操作
配置文件中多余的注解可以删掉,只留下这些就行了
daemonize yes //redis后台运行
bind 0.0.0.0 //改成你对应的IP
pidfile /var/run/redis_7000.pid //pidfile文件对应7000
port 7000 //端口7000 7001 ...这些都对应修改
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes.conf //集群的配置 配置文件首次启动自动生成
cluster-node-timeout 5000 //请求超时 设置5秒够了
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
protected-mode no //在redis3.2之后,redis增加了protected-mode,在这个模式下,即使注释掉了bind 127.0.0.1,
修改完 esc 退出
:wq 保存
启动
./src/redis-server /var/redis-cluster/7000/redis.conf
./src/redis-server /var/redis-cluster/7001/redis.conf
./src/redis-server /var/redis-cluster/7002/redis.conf
./src/redis-server /var/redis-cluster/7003/redis.conf
./src/redis-server /var/redis-cluster/7004/redis.conf
./src/redis-server /var/redis-cluster/7005/redis.conf
执行命令,查看redis运行状况
ps -ef | grep redis
root 3067 1 0 00:43 ? 00:01:53 ./src/redis-server 0.0.0.0:6379
root 41193 1 0 09:50 ? 00:00:45 ./src/redis-server 0.0.0.0:7000 [cluster]
root 42190 1 0 10:36 ? 00:00:40 ./src/redis-server 0.0.0.0:7001 [cluster]
root 42201 1 0 10:36 ? 00:00:40 ./src/redis-server 0.0.0.0:7002 [cluster]
root 42228 1 0 10:36 ? 00:00:40 ./src/redis-server 0.0.0.0:7004 [cluster]
root 42308 1 0 10:39 ? 00:00:39 ./src/redis-server 0.0.0.0:7003 [cluster]
root 58338 58207 0 17:20 pts/1 00:00:00 ./src/redis-cli
root 58717 53467 0 17:45 pts/0 00:00:00 grep --color=auto redis
安装ruby的解释器,新建一个文件夹
cd /var/redis/
mkdir ruby
cd ruby
wget https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.gz
解压
tar -zxvf ruby-2.6.3.tar.gz
进入解压目录 (cd ruby-2.6.3)
执行命令
cd ruby-2.6.3
./configure
make && make install
如果报错
redis make: *** No rule to make target `/include/ruby.h', needed by `zlib.o'. Stop.
在ruby文件路径下 继续 cd ext/zlib/
vi Makefile
zlib.o: $(top_srcdir)/include/ruby.h
修改为
zlib.o: ../../include/ruby.h
退出保存
make && make install
查看是否安装成功 如果没有配置环境变量,必须在安装目录下执行
ruby -v
开始启动
切记是在src路径下执行 ,不然找不到redis-trib.rb的
[root@localhost src]# ./redis-trib.rb create --replicas 1 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
肯定会报这个,没关系,注意它说的 Example 把那句话拷贝出来
WARNING: redis-trib.rb is not longer available!
You should use redis-cli instead.
All commands and features belonging to redis-trib.rb have been moved
to redis-cli.
In order to use them you should call redis-cli with the --cluster
option followed by the subcommand name, arguments and options.
Use the following syntax:
redis-cli --cluster SUBCOMMAND [ARGUMENTS] [OPTIONS]
Example:
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
To get help about all subcommands, type:
redis-cli --cluster help
再次执行
[root@localhost 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
返回,输入yes
[root@localhost 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
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 127.0.0.1:7004 to 127.0.0.1:7000
Adding replica 127.0.0.1:7005 to 127.0.0.1:7001
Adding replica 127.0.0.1:7003 to 127.0.0.1:7002
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 2eebb69604b658bf1556c4a734e70fddea55b92c 127.0.0.1:7000
slots:[0-5460] (5461 slots) master
M: 2d895f4704cbe5bfb1f594718d12044b1bf8f6d6 127.0.0.1:7001
slots:[5461-10922] (5462 slots) master
M: 6eb3640f2deff214dfeb4580bd387149ccc73054 127.0.0.1:7002
slots:[10923-16383] (5461 slots) master
S: 19a94a67ece849ef0d848eddd5aa26d7f375c5bc 127.0.0.1:7003
replicates 2eebb69604b658bf1556c4a734e70fddea55b92c
S: a8ff93250e9be45109fae456be4472a068624c33 127.0.0.1:7004
replicates 2d895f4704cbe5bfb1f594718d12044b1bf8f6d6
S: 6ddd531fa9d1f6522145e92836358e037c0b6b35 127.0.0.1:7005
replicates 6eb3640f2deff214dfeb4580bd387149ccc73054
Can I set the above configuration? (type 'yes' to accept): yes
看到最后输出,表示已经成功
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
...
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: 2eebb69604b658bf1556c4a734e70fddea55b92c 127.0.0.1:7000
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: 6eb3640f2deff214dfeb4580bd387149ccc73054 127.0.0.1:7002
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: a8ff93250e9be45109fae456be4472a068624c33 127.0.0.1:7004
slots: (0 slots) slave
replicates 2d895f4704cbe5bfb1f594718d12044b1bf8f6d6
S: 19a94a67ece849ef0d848eddd5aa26d7f375c5bc 127.0.0.1:7003
slots: (0 slots) slave
replicates 2eebb69604b658bf1556c4a734e70fddea55b92c
M: 2d895f4704cbe5bfb1f594718d12044b1bf8f6d6 127.0.0.1:7001
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
S: 6ddd531fa9d1f6522145e92836358e037c0b6b35 127.0.0.1:7005
slots: (0 slots) slave
replicates 6eb3640f2deff214dfeb4580bd387149ccc73054
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
ok,使用redis-cli测试
[root@localhost src]# ./redis-cli -c -p 7000
127.0.0.1:7000> set name zhangsan
-> Redirected to slot [5798] located at 127.0.0.1:7001
OK
127.0.0.1:7001> get name
"zhangsan"
127.0.0.1:7001>
[root@localhost src]# ./redis-cli -c -p 7003
127.0.0.1:7003> set name lisi
-> Redirected to slot [5798] located at 127.0.0.1:7001
OK
127.0.0.1:7001>
欧克,结束,redis集群搭建完毕,如参考过程中有问题或者出现问题,可在下方评论,我会回复的,如有不当之处,也请多多指教