jedis是java操作redis最常用的驱动包,有多中使用方式,做一个总结方法自己使用:
依赖jar
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.6.2</version> <type>jar</type> </dependency>
1.最简单的使用方式
/**
* 这中是最简单的使用方式,每个Jedis对象都代表一个和RedisServer的socket连接,可以通过它来和远程的redis服务器通讯,执行命令;缺点在于不能每次使用都new一个Jedis对象。
*/
@Test
public void testSimpleJedis(){
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.set("name", "sky");
System.out.println(jedis.get("name"));
}2. 使用连接池方式
/**
* 这种采用连接池的方式可以避免频繁的创建和销毁Jedis对象所带来的性能消耗;连接池底层是 使用commons-pool来实现的,所有commons-pool支持的配置参数都可以用来配置JedisPool
缺点是只能操作一个远程的redis服务器
*/
public void testJedisPool(){
JedisPool jedisPool = new JedisPool("127.0.0.1", 6379);
Jedis jedis = jedisPool.getResource();
jedis.set("name", "sky");
System.out.println(jedis.get("name"));
jedisPool.returnBrokenResource(jedis);
}
和 spring 的集成配置
<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 class="redis.clients.jedis.JedisPool">
<constructor-arg index="0" ref="jedisPoolConfig"/>
<constructor-arg index="1" value="${redis.host}"/>
<constructor-arg index="2" value="${redis.port}"/>
</bean>3. 集群分片
/**
* 集群分片直连。 采用一致性hash来处理分片机器down机故障,减小缓存失效对应用的影响。
*/
@Test
public void testShared(){
List<JedisShardInfo> shards = Arrays.asList(
new JedisShardInfo("localhost", 6379),
new JedisShardInfo("localhost", 6380));
//在new的同时建立和远程服务器的连接
ShardedJedis sharding = new ShardedJedis(shards);
long start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
String result = sharding.set("sn" + i, "n" + i);
}
long end = System.currentTimeMillis();
System.out.println("Simple@Sharing SET: " + ((end - start) / 1000.0) + " seconds");
sharding.disconnect();
}4.集群分片+连接池
@Test
public void testSharedPool(){
List<JedisShardInfo> shards = Arrays.asList(
new JedisShardInfo("localhost",6379),
new JedisShardInfo("localhost",6380));
ShardedJedisPool pool = new ShardedJedisPool(new JedisPoolConfig(), shards);
ShardedJedis one = pool.getResource();
long start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
String result = one.set("spn" + i, "n" + i);
}
long end = System.currentTimeMillis();
pool.returnResource(one);
System.out.println("Simple@Pool SET: " + ((end - start)/1000.0) + " seconds");
pool.destroy();
}本文出自 “java小沙弥” 博客,请务必保留此出处http://leokongwq.blog.51cto.com/1310215/1708083
原文:http://leokongwq.blog.51cto.com/1310215/1708083