最近进行redis的学习,将过程和问题记录一下以供以后参考
一,Linux下单机版redis安装使用
1.1:从redis官网下载redis,本次下载的是redis-4.0.11.tar.gz
1.2:将文件拷贝到linux主机,本次建立目录usr/local/temp并拷贝到该目录下
1.3:进入上述目录执行
tar -zxvf redis-4.0.11.tar.gz
进入解压得到的目录执行make install
cd redis-4.0.11
make install PREFIX=/usr/local/redis
同时将解压目录中的redis配置文件redis.conf拷贝到、usr/local/redis的目录中,本次我拷贝到了usr/local/redis/bin中,与redis-server,redis-cli同级目录
1.4:修改redis.conf的配置文件中将daemonize的值改为yes该配置是让redis支持后台运行,默认redis是不在后台运行的
1.5:进入usr/local/redis/bin目录中通过./redis-server redis.conf启动redis。这个时候通过ps -ef|grep redis可以查看到运行的redis服务实例。在该目录中运行./redis-cli 可以连接到redisserver进行测试。
1.6:使用jedis的API通过java程序连接和使用redis
二,Linux下redis集群安装部署
2.1:本次测试我们在一个Linux虚拟机上部署多个redis节点组成集群,有条件的可以使用多个主机进行部署
2.2:我们在/usr/local下创建目录redis-cluster
2.3:重新make install六个(奇数个节点[3]*一主一备[2]或者拷贝已经make好的redis六份到redis-cluster目录得到如下的redis-cluster目录
2.4:将redis.conf配置文件分别拷贝到6个redis下面,同时分别修改六个redis的配置文件修改如下内容
port 7001 //端口7001-7006 六个节点
bind 本机ip //默认ip为127.0.0.1 改成当前机器IP(不改会遇到问题)
daemonize yes //redis后台运行
cluster-enabled yes //开启集群 把注释#去掉(不改会遇到问题)
分别进入到redis节点目录,使用命令./redis-server redis.conf启动该六个节点看是否正常。
2.5:将redis解压目录中src下redis-trib.rb拷贝到/usr/local/bin(注意此处目录)中执行
redis-trib.rb create --replicas 1 192.168.1.100:7001 192.168.1.100:7002 192.168.1.100:7003 192.168.1.100:7004 192.168.1.100:7005 192.168.1.100:7006
发现执行失败,失败是因为需要ruby,所以需要进行ruby安装
yum -y install ruby ruby-devel rubygems rpm-build
gem install redis
完成后重新执行redis-trib.rb命令,(这里有可能直接成功,也有可能失败,后面会进行说明),输入yes完成。
2.6:进行验证,通过redis-cli连接其中一个redis节点,例如进入/usr/local/redis-cluster/redis01/bin目录下执行
./redis-cli -h 192.168.1.100 -p 7001 -c
其中-h -p这些都不能省略因为当前redis的节点ip和端口都已经被修改,-c表示的是集群模式,查看redis主机情况并连接测试结
果如图
连接其他的节点测试同理,运转正常。
2.7:在创建集群的时候可能会遇到的问题
2.7.1:在2.5中ruby安装成功后执行依然报错说ruby版本过低问题
2.7.2:在2.5中ruby搞定后执行redis-trib命令时还有可能会有 can't connect to node 192.168.*.*这种问题,原因是2.4中的ip没有修改bind 127.0.0.1此处一定要修改;还有可能会遇到[ERR] Node 192.168.1.100:7001 is not configured as a cluster node这种错误引起的原因还是2.4中设置集群模式没有开启;还有可能遇到Node 192.168.1.100:7001 is not empty这种,这种情况是因为改了IP后原来的文件dump.rdb nodes.conf执行问题,可以去每个redis节点下删除该两个文件
以上问题请参考:
https://www.cnblogs.com/PatrickLiu/p/8454579.html