搭建redis集群
- 集群搭建步骤
- 创建6个redis实例,端口号从7001~7006
- 修改redis配置文件:vim redis01.conf
- 配置端口号
port 7001 - 打开cluster-enable前面的注释,打开集群
cluster-enable yes - 其他5个redis实例复制01的配置文件,并修改端口号
- 配置端口号
- 把创建集群的ruby脚本复制到redis-cluster目录下
- 在解压缩的文件下:/redis-3.0.0/src/redis-trib.rb
- 将redis-cluster下面的6个redis启动
- 用脚本的方式启动6个redis
1. vim 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 .. 2. chmod -x startall.sh 或者 chmod 777 startall.sh 3. ./startall.sh 4. ps aux|grep redis
- 用脚本的方式启动6个redis
- 创建集群
- 运行脚本
./redis-trib.rb create --replicas 1 192.168.1.128:7001 192.168.1.128:7002 192.168.1.128:7003 192.168.1.128:7004 192.168.1.128:7005 192.168.1.128:7006
- 运行脚本
- 测试集群
- 测试
# 末尾没有 -c ,报错 [root@rzk redis-cluster]# redis01/redis-cli -h 192.168.1.128 -p 7002 192.168.1.128:7002> set a 100 (error) MOVED 15495 192.168.25.153:7003 192.168.1.128:7002> [root@rzk redis-cluster]# redis01/redis-cli -h 192.168.1.128 -p 7002 -c 192.168.1.128:7002> set a 100 -> Redirected to slot [15495] located at 192.168.1.128:7003 OK
- 测试
- 关闭redis集群
- 用脚本的方式关闭
vim /usr/local/redis-cluster/shutdownall.sh redis01/redis-cli -p 7001 shutdown redis02/redis-cli -p 7002 shutdown redis03/redis-cli -p 7003 shutdown redis04/redis-cli -p 7004 shutdown redis05/redis-cli -p 7005 shutdown redis06/redis-cli -p 7006 shutdown
- 用脚本的方式关闭
- redis客户端
- redis-cli【自带的客户端】
- redis-desktop-manager【图形化客户端 只是单机版不能做集群】
redis 整合 spring
- 创建 applicationContext-jedis.xml
- 单机版整合
- xml 配置【连接池可省略,使用默认】
<!-- 连接池配置 --> <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> <!-- jedis客户端单机版 --> <bean id="redisClient" class="redis.clients.jedis.JedisPool"> <constructor-arg name="host" value="192.168.25.153"></constructor-arg> <constructor-arg name="port" value="6379"></constructor-arg> <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg> </bean>
- java测试
/** * 单机版测试 * <p>Title: testSpringJedisSingle</p> * <p>Description: </p> */ @Test public void testSpringJedisSingle() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml"); JedisPool pool = (JedisPool) applicationContext.getBean("redisClient"); Jedis jedis = pool.getResource(); String string = jedis.get("key1"); System.out.println(string); jedis.close(); pool.close(); }
- xml 配置【连接池可省略,使用默认】
- 集群版整合
- xml 配置
<bean id="redisClient" class="redis.clients.jedis.JedisCluster"> <constructor-arg name="nodes"> <set> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.1.128"></constructor-arg> <constructor-arg name="port" value="7001"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.1.128"></constructor-arg> <constructor-arg name="port" value="7002"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.1.128"></constructor-arg> <constructor-arg name="port" value="7003"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.1.128"></constructor-arg> <constructor-arg name="port" value="7004"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.1.128"></constructor-arg> <constructor-arg name="port" value="7005"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.1.128"></constructor-arg> <constructor-arg name="port" value="7006"></constructor-arg> </bean> </set> </constructor-arg> <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg> </bean>
- java测试
@Test public void testSpringJedisCluster() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml"); JedisCluster jedisCluster = (JedisCluster) applicationContext.getBean("redisClient"); String string = jedisCluster.get("key1"); System.out.println(string); jedisCluster.close(); }
- xml 配置
- 单机版整合