缓存问题一向是提高效率的有效方法,redis的用法一搜一大把,想深入些就搭建cluster集群环境。
主要操作参考http://baijiahao.baidu.com/s?id=1570378814116719
在这里记录几个要点
首先需要bind 的地址是本机的地址,也就是192.168.*.*,如果是127.0.0.1的方式就无法建立集群。
这里给出junit测试代码:
import java.util.HashSet; import java.util.Set; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import redis.clients.jedis.HostAndPort; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisCluster; import redis.clients.jedis.JedisPool; public class JedisTest { @Test public void testJedisSingle(){ // 创建一个jedis对象 Jedis jedis = new Jedis("192.168.31.136", 6379); // 直接调用jedis对象的方法,方法名称和redis命令一致 jedis.set("key1", "jedis test"); String value = jedis.get("key1"); System.out.println(value); jedis.del("key1"); // 关闭jedis jedis.close(); } @Test public void testJedisPool(){ // 创建连接池 JedisPool pool = new JedisPool("192.168.31.136", 6379); // 从连接池中获得jedis对象 Jedis jedis = pool.getResource(); jedis.set("key1", "jedis test"); String value = jedis.get("key1"); System.out.println(value); jedis.del("key1"); // 关闭jedis jedis.close(); pool.close(); } @Test public void testJedisCluster(){ Set<HostAndPort> nodes = new HashSet<HostAndPort>(); nodes.add(new HostAndPort("192.168.31.136", 7001)); nodes.add(new HostAndPort("192.168.31.136", 7002)); nodes.add(new HostAndPort("192.168.31.136", 7003)); nodes.add(new HostAndPort("192.168.31.136", 7004)); nodes.add(new HostAndPort("192.168.31.136", 7005)); nodes.add(new HostAndPort("192.168.31.136", 7006)); JedisCluster cluster = new JedisCluster(nodes); cluster.set("key1", "1000"); String str = cluster.get("key1"); System.out.println(str); cluster.del("key1"); cluster.close(); } @Test public void testSpringJedisSingle(){ ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:config/applicationContext-*.xml"); JedisPool pool = (JedisPool) ac.getBean("jedisPool"); Jedis jedis = pool.getResource(); jedis.set("key1", "jedis spring test"); String value = jedis.get("key1"); System.out.println(value); jedis.del("key1"); // 关闭jedis jedis.close(); pool.close(); } @Test public void testSpringJedisCluster(){ ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:config/applicationContext-*.xml"); JedisCluster cluster = (JedisCluster) ac.getBean("redisClient"); cluster.set("key1", "jedis spring test"); String value = cluster.get("key1"); System.out.println(value); cluster.del("key1"); // 关闭jedis cluster.close(); } }
applicationContext-jedis.xml代码如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"> <!-- jedis客户端单机版 --> <bean id="jedisPool" class="redis.clients.jedis.JedisPool"> <constructor-arg name="host" value="192.168.31.136"></constructor-arg> <constructor-arg name="port" value="6379"></constructor-arg> </bean> <!-- jedis集群版配置 --> <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.31.136"></constructor-arg> <constructor-arg name="port" value="7001"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.31.136"></constructor-arg> <constructor-arg name="port" value="7002"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.31.136"></constructor-arg> <constructor-arg name="port" value="7003"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.31.136"></constructor-arg> <constructor-arg name="port" value="7004"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.31.136"></constructor-arg> <constructor-arg name="port" value="7005"></constructor-arg> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.31.136"></constructor-arg> <constructor-arg name="port" value="7006"></constructor-arg> </bean> </set> </constructor-arg> </bean> </beans>
测试可以通过,在这里做个记录。
顺便说一下,在测试中无法自动编译,所以采用下面的方式修改后就可以了。
项目上右键-->properties-->Java compiler-->building-->enable project specific setting-->build path problems-->选中abort Incomplete build path/Circular dependencies 这两个选项修改为Warning