搭建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 配置
- 單機版整合