1、java对Redis集群的操作
1、使用java操作Redis集群需要用到 jedis jar 包我用的是 jedis-2.9.0.jar连接池需要 commons-pool 的jar包
链接: https://pan.baidu.com/s/1K0YrsN-OqKT0F3xvooug0w 密码: 67fj
2、代码实现
package com.xyq.redis.test;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;
public class ClusterRedis {
public static void main(String[] args) {
Set<HostAndPort> clusterNodes = new HashSet<HostAndPort>();//定义一个存放集群节点的set
clusterNodes.add(new HostAndPort("192.168.43.201", 6379));
clusterNodes.add(new HostAndPort("192.168.43.64", 6379));
clusterNodes.add(new HostAndPort("192.168.43.106", 6379));
clusterNodes.add(new HostAndPort("192.168.43.108", 6379));
clusterNodes.add(new HostAndPort("192.168.43.180", 6379));
clusterNodes.add(new HostAndPort("192.168.43.96", 6379));//添加节点
JedisPoolConfig jpc = new JedisPoolConfig();//创建集群配置实例
jpc.setMaxIdle(20);
jpc.setMaxTotal(100);
jpc.setMaxWaitMillis(-1);
jpc.setTestOnBorrow(true);
JedisCluster jedisCluster = new JedisCluster(clusterNodes, 6000, 1000, jpc);
System.out.println(jedisCluster.getClusterNodes());
jedisCluster.set("name", "z3");//设值
jedisCluster.set("age", "20");
jedisCluster.set("sex", "nan");
String name = jedisCluster.get("name");//取值
String age = jedisCluster.get("age");
String sex = jedisCluster.get("sex");
System.out.println(name + " " + age + " " + sex);
try {
jedisCluster.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
3、我遇到的错误
Exception in thread "main" java.lang.NumberFormatException: For input string: "6379@16379"
错误原因jedis.jar 的版本过低,我先前用的是jedis-2.7.2.jar 升级为jedis-2.9.0.jar就可以解决
2、Redis与Spring整合
1、导包 (所需jar包都可以在上面连接中找到)
2、代码实现
目录结构
applicationContext-cluster.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:property-placeholder location="classpath:redis.properties" />
<context:component-scan base-package="com.xyq.redis.test">
</context:component-scan>
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="${redis.maxIdle}" />
<property name="maxTotal" value="${redis.maxActive}" />
<property name="maxWaitMillis" value="${redis.maxWait}" />
<property name="testOnBorrow" value="${redis.testOnBorrow}" />
</bean>
<bean id="hostport1" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.43.201" />
<constructor-arg name="port" value="6379" />
</bean>
<bean id="hostport2" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.43.64" />
<constructor-arg name="port" value="6379" />
</bean>
<bean id="hostport3" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.43.106" />
<constructor-arg name="port" value="6379" />
</bean>
<bean id="hostport4" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.43.108" />
<constructor-arg name="port" value="6379" />
</bean>
<bean id="hostport5" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.43.180" />
<constructor-arg name="port" value="6379" />
</bean>
<bean id="hostport6" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.43.96" />
<constructor-arg name="port" value="6379" />
</bean>
<bean id="redisCluster" class="redis.clients.jedis.JedisCluster">
<constructor-arg name="nodes">
<set>
<ref bean="hostport1" />
<ref bean="hostport2" />
<ref bean="hostport3" />
<ref bean="hostport4" />
<ref bean="hostport5" />
<ref bean="hostport6" />
</set>
</constructor-arg>
<constructor-arg name="timeout" value="6000" />
<constructor-arg name="poolConfig">
<ref bean="jedisPoolConfig" />
</constructor-arg>
</bean>
</beans>
redis.properties
redis.maxIdle=20
redis.maxActive=100
redis.maxWait=-1
redis.testOnBorrow=true
TestRedis类
package com.xyq.redis.test;
import java.io.IOException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import redis.clients.jedis.JedisCluster;
public class TestRedis {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-cluster.xml");
JedisCluster jedisCluster = (JedisCluster) ac.getBean("redisCluster");
System.out.println(jedisCluster.getClusterNodes());
jedisCluster.set("name", "z3");//设值
jedisCluster.set("age", "20");
jedisCluster.set("sex", "nan");
String name = jedisCluster.get("name");//取值
String age = jedisCluster.get("age");
String sex = jedisCluster.get("sex");
System.out.println(name + " " + age + " " + sex);
try {
jedisCluster.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}