1、上传redis-3.0.0.tar.gz源码包
cd /home/redis/
rz
注:本人使用rz上传,安装方式:
yum install -y lszrz
2、解压redis源码包
tar -zxvf redis-3.0.0.tar.gz
3、编译redis源码
cd /home/redis/redis-3.0.0
make
4、安装redis到/usr/local/redis-cluster
make install PREFIX=/usr/local/redis-cluster/
5、修改redis安装后的默认文件名
cd /usr/local/redis-cluster/
mv bin redis01
6、从redis源码复制配置文件到redis01
cd redis01
cp /home/redis/redis-3.0.0/redis.conf ./
7、编辑redis01配置文件
daemonize yes // 启用静默启动方式
port 6319 // 修改端口号
cluster-enabled yes // 启用集群
保存退出:/wq
8、复制redis01实例,创建多个redis节点
cd //usr/local/redis-cluster
cp -r redis01 redis02
cp -r redis01 redis03
cp -r redis01 redis04
cp -r redis01 redis05
cp -r redis01 redis06
9、修改每个实例的端口号,分别为6319、6329、6339、6349、6359、6369
vi redis02/redis.conf
10、上传redis-3.0.0.gem到/usr/local/redis-cluster/,并安装
gem install redis-3.0.0.gem
如果-bash: gem: command not found,则安装gem指令:
yum -y install rubygems-devel
11、从redis源码包复制ruby脚本到/usr/local/redis-cluster/
cp /home/redis/redis-3.0.0/src/*.rb /usr/local/redis-cluster/
12、编写批量启动redis服务sh脚本start-redis-cluster.sh
cd /usr/local/redis-cluster/redis01
./redis-server redis.conf
cd /usr/local/redis-cluster/redis02
./redis-server redis.conf
cd /usr/local/redis-cluster/redis03
./redis-server redis.conf
cd /usr/local/redis-cluster/redis04
./redis-server redis.conf
cd /usr/local/redis-cluster/redis05
./redis-server redis.conf
cd /usr/local/redis-cluster/redis06
./redis-server redis.conf
添加执行权限
chmod 777 start-redis-cluster.sh
13、启动redis服务
./start-redis-cluster.sh
14、安装redis集群
--replicas 1参数,代表每个master实例,有一个slave实例
./redis-trib.rb create --replicas 1 192.168.120.12:6319 192.168.120.12:6329 192.168.120.12:6339 192.168.120.12:6349 192.168.120.12:6359 192.168.120.12:6369
安装中可能出现的问题,请参考http://blog.csdn.net/ownfire/article/details/46624005
-
配置完所有主节点后,报" ERR Invalid node address specified"
由于Redis-trib.rb 对域名或主机名支持不好,故在创建集群的时候要使用ip:port的方式
redis-trib.rb create ip1:port1 ip2:port2 ip3:port3
-
创建集群时报某个err slot 0 is already busy (redis::commanderror)
这是由于之间创建集群没有成功,需要将nodes.conf和dir里面的文件全部删除(注意不要删除了redis.conf),然后重启redis服务
/**
* ClassName: JedisClusterTest <br/>
* Description: test JedisCluster <br/>
* Date: 2017年4月17日 下午3:44:26 <br/>
* <br/>
*
* @author 1139162887@qq.com(邮箱)
*
* 修改记录
* @version 产品版本信息 yyyy-mm-dd 姓名(邮箱) 修改信息<br/>
*
*/
public class JedisClusterTest {
@Test
public void test() {
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("192.168.120.12", 6319));
nodes.add(new HostAndPort("192.168.120.12", 6329));
nodes.add(new HostAndPort("192.168.120.12", 6339));
nodes.add(new HostAndPort("192.168.120.12", 6349));
nodes.add(new HostAndPort("192.168.120.12", 6359));
nodes.add(new HostAndPort("192.168.120.12", 6369));
JedisCluster cluster = new JedisCluster(nodes);
String address = cluster.set("address", "北京市");
String pAddress = cluster.get("address");
System.out.println(address + "==" + pAddress);
cluster.close();
System.out.println("game over!");
}
}
测试结果:
OK==北京市
game over!