由于电脑硬件限制,不可能搭建真正的集群,所以只能搭建伪集群来供学习。
1.# yum install ruby -y
1.1 后面需要用到 ruby 脚本
2.# yum install rubygems -y
2.1 安装 ruby 包管理器
3.# gem install redis-3.0.0.gem
3.1 脚本需要 ruby 其他包,所以安装这个 redis.gem
4.# mkdir reids-cluster
4.1 在/usr/local 中新建 redis-cluster 文件夹
5.# cp -r bin ../redis-cluster/redis01
5.1 把之前安装好的 redis/bin 复制到 redis-cluster 中并起名为 redis01
6.# rm -rf dump.rdb
6.1 删除掉 redis01 中 dump.rdb 数据库文件
7.# vi redis.conf
7.1 修改 redis01 中端口号为 7001, 找到 port 后面修改为 7001
7.2 去掉 cluster-enabled yes 前面的注释
7.3 如果之前设置过密码,注释掉密码.如果没有设置过过略 7.3 这步骤
8.# cp -r redis01 redis02
cp -r redis01 redis03
cp -r redis01 redis04
cp -r redis01 redis05
cp -r redis01 redis06
8.1 把 redis01 文件夹在复制 5 份,分别起名为 redis02,redis03,redis04,redis05,redis06
9# vi redis02/redis.conf
9.1 此命令需要在 redis-cluster 下执行
9.2 把 其 他 5 个 文 件 夹 中 redis.conf 中 port 修 改 成 不 同 的 值 , 分 别 为
7002,7003,7004,7005,7006
10.# cp *.rb /usr/local/redis-cluster/
10.1 去 redis 解压目录中 src 下执行此命令
10.2 把 redis-trib.rb 复制到 reids-cluster 中.
11.# vi startall.sh
cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd .. cd redis06
./redis-server redis.conf
cd ..
12由于权限不够,所以要增加权限
# chmod +x startall.sh
给脚本设置一个可启动权限
13.# ./startall.sh
13.1 执行脚本,启动所有 redis 服务
14.# ps aux|grep redis
14.1 查看所有服务是否启动成功
15.# ./redis-trib.rb create --replicas 1 192.168.192.130:7001 192.168.192.130:7002
192.168.192.130:7003 192.168.192.130:7004 192.168.192.130:7005 192.168.192.130:7006
15.1 创建集群
15.2 在执行时按照提示输入’yes’
16.# ./redis01/redis-cli -h 192.168.10.128 -p 7001 -c
16.1 进入任意节点测试
此时,集群就搭建成功了。
但是要想外部访问Redis就要开启端口。
vim /etc/sysconfig/iptables
在相应的位置,写上7001:7006.
冒号表示从7001端口到7006端口。
然后重启服务# service iptables restart
在项目中这样来使用
public void test1() {
Set<HostAndPort> set=new HashSet<>();
set.add(new HostAndPort("192.168.226.130", 7001));
set.add(new HostAndPort("192.168.226.130", 7002));
set.add(new HostAndPort("192.168.226.130", 7003));
set.add(new HostAndPort("192.168.226.130", 7004));
set.add(new HostAndPort("192.168.226.130", 7005));
set.add(new HostAndPort("192.168.226.130", 7006));
JedisCluster cluster=new JedisCluster(set);
String result = cluster.get("a");
System.out.println(result);
}
也可以去spring中去配置,把它交给spring来管理。
<!-- 配置jedis连接池 -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!-- 最大连接数 -->
<property name="maxTotal" value="30" />
<!-- 最大空闲连接数 -->
<property name="maxIdle" value="10" />
<!-- 每次释放连接的最大数目 -->
<property name="numTestsPerEvictionRun" value="1024" />
<!-- 释放连接的扫描间隔(毫秒) -->
<property name="timeBetweenEvictionRunsMillis" value="30000" />
<!-- 连接最小空闲时间 -->
<property name="minEvictableIdleTimeMillis" value="1800000" />
<!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 -->
<property name="softMinEvictableIdleTimeMillis" value="10000" />
<!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->
<property name="maxWaitMillis" value="1500" />
<!-- 在获取连接的时候检查有效性, 默认false -->
<property name="testOnBorrow" value="true" />
<!-- 在空闲时检查有效性, 默认false -->
<property name="testWhileIdle" value="true" />
<!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
<property name="blockWhenExhausted" value="false" />
</bean>
<!-- jedisCluster -->
<bean id="jedisClients" class="redis.clients.jedis.JedisCluster">
<constructor-arg name="poolConfig" ref="jedisPoolConfig"/>
<constructor-arg name="nodes">
<set>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.226.130"/>
<constructor-arg name="port" value="7001"/>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.226.130"/>
<constructor-arg name="port" value="7002"/>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.226.130"/>
<constructor-arg name="port" value="7003"/>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.226.130"/>
<constructor-arg name="port" value="7004"/>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.226.130"/>
<constructor-arg name="port" value="7005"/>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.226.130"/>
<constructor-arg name="port" value="7006"/>
</bean>
</set>
</constructor-arg>
</bean>
</beans>