jedis是java操作redis最常用的驱动包,有多中使用方式,做一个总结方法自己使用:

依赖jar


    redis.clients
    jedis
    2.6.2
    jar


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 的集成配置

    
    
    
    



    
    
    


3. 集群分片

/**
 * 集群分片直连。 采用一致性hash来处理分片机器down机故障,减小缓存失效对应用的影响。
 */
@Test
public void testShared(){
    List 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 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();
}