Redis Jedisの使用(上)

64793 ワード

JedisはRedis公式の第一選択のJavaクライアント開発パッケージです。
紙面が限られているため、この章は例示的なコードだけを提供して、テスト結果を貼り付けません。下編の末にもとのコードのダウンロードを提供して、自分で実験することができます。
接続ツールクラス
public class RedisUtil {

    //Redis   IP
    private static String ADDR = "127.0.0.1";

    //Redis    
    private static int PORT = 6379;

    //    
//    private static String AUTH = "heqing";

    //           ,    8;
    //     -1,      ;  pool     maxActive jedis  ,   pool    exhausted(  )。
    private static int MAX_TOTAL = 1024;

    //    pool         idle(   ) jedis  ,     8。
    private static int MAX_IDLE = 200;

    //           ,    ,    -1,      。        ,     JedisConnectionException;
    private static int MAX_WAIT = 10000;

    private static int TIMEOUT = 10000;

    // borrow  jedis   ,      validate  ;   true,    jedis       ;
    private static boolean TEST_ON_BORROW = true;

    private static JedisPool jedisPool = null;
    private static ShardedJedisPool shardedJedisPool = null;

    //redis-server.exe redis.windows.conf       //  redis
    /**
     *    Redis   
     */
    static {
        try {
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(MAX_TOTAL);
            config.setMaxIdle(MAX_IDLE);
            config.setMaxWaitMillis(MAX_WAIT);
            config.setTestOnBorrow(TEST_ON_BORROW);
//            jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH);   //     AUTH
            jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT);

            List jdsInfoList =new ArrayList();
            JedisShardInfo infoA = new JedisShardInfo(ADDR, PORT);
//            infoA.setPassword(AUTH);    //     AUTH
            jdsInfoList.add(infoA);
            shardedJedisPool = new ShardedJedisPool(config, jdsInfoList);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     *   Jedis  
     * @return
     */
    public synchronized static Jedis getJedis() {
        try {
            if (jedisPool != null) {
                Jedis resource = jedisPool.getResource();
                return resource;
            } else {
                jedisPool = new JedisPool(new JedisPoolConfig(), ADDR); 
                return jedisPool.getResource();
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public synchronized static ShardedJedis getShardedJedis() {
        try {
            if (shardedJedisPool != null) {
                ShardedJedis shardedJedis = shardedJedisPool.getResource();
                return shardedJedis;
            } 
            return null;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    /**
     *   jedis  
     * @param jedis
     */
    @SuppressWarnings("deprecation")
    public static void returnResource(final Jedis jedis) {
        if (jedis != null && jedisPool !=null ) {
            jedisPool.returnResource(jedis);
        }
    }

    @SuppressWarnings("deprecation")
    public static void returnResource(final ShardedJedis shardedJedis) {
        if (shardedJedis != null && shardedJedisPool !=null ) {
            shardedJedisPool.returnResource(shardedJedis);
        }
    }

    public static JedisPool getJedisPool() {
        return jedisPool;
    }

    public static ShardedJedisPool getShardedJedisPool() {
        return shardedJedisPool;
    }

    public static void destroyJedisPool() {
        jedisPool.destroy();
    }

    public static void destroyShardedJedisPool() {
        shardedJedisPool.destroy();
    }
}
操作キー
public class TestKey {

    private Jedis jedis; //         ,        

    @Before
    public void setup() {
      jedis = RedisUtil.getJedis();
    }

//    @Test
    public void testAdd() {
        System.out.println("============= =============");
        //   key    
        System.out.println("  name     :"+jedis.exists("name")); 
        System.out.println("  name,heqing   :"+jedis.set("name", "heqing")); 
        System.out.println("  name     :"+jedis.exists("name")); 

        //    qq     
        System.out.println("  qq    :"+jedis.set("qq", "975656343"));
        System.out.println("   qq      3 :"+jedis.expire("qq", 3));
        try{ 
            Thread.sleep(4000); 
        } 
        catch (InterruptedException e){ 
        } 
        System.out.println("  qq    :"+jedis.exists("qq"));
        //     key       ,  【 】.             -1
        System.out.println("  qq       :"+jedis.ttl("qq"));
        //     key     
        System.out.println("  qq     :"+jedis.persist("qq"));
    }

//    @Test
    public void testFind() {
        //         key
        Set keys = jedis.keys("*");
        Iterator it=keys.iterator() ;   
        while(it.hasNext()) {
          String key = it.next();
          System.out.println(key +"    :"+ jedis.type(key));   
        }  
    }    

    @Test
    public void testKey() {
        //     key, key   ,      。
        System.out.println("     name: "+jedis.del("name"));
        System.out.println("  name    :"+jedis.exists("name"));
    }
}
操作文字列(String)
public class TestString {

    private Jedis jedis; //         ,        

    @Before
    public void setup() {
      jedis = RedisUtil.getJedis();
    }

    /**
     * jedis.setnx("name","***")       ,          
     * jedis.set("name","***")         ,         
     */
    @Test
    public void testAdd() {
        System.out.println("============= =============");
        jedis.set("name","heqing");
        jedis.set("age","26");
        System.out.println(jedis.get("name"));
        System.out.println(jedis.get("age"));
        Set keys = jedis.keys("*"); 
        System.out.println("  "+keys.size()+"   ");

        System.out.println("=============             =============");
        System.out.println(" age   ,    age:"+jedis.setnx("age", "27"));
        System.out.println("  age    :"+jedis.get("age"));
        System.out.println("  age    ,  age:"+jedis.set("age", "28"));
        System.out.println("  age    :"+jedis.get("age"));
    }

    /** 
     * set          
     * append           
     * incr    1  ,        
     */ 
//    @Test
    public void testUpdate() {
        System.out.println("============= =============");
        System.out.println("    name     :"+jedis.set("name","heqing-update"));
        System.out.println("  name     :"+jedis.get("name"));
        System.out.println(" name       :"+jedis.append("name","-append"));
        System.out.println("  name     :"+jedis.get("name")); 
        System.out.println(" age   1  :"+jedis.incr("age"));
        System.out.println("  age     :"+jedis.get("age"));

        System.out.println("=============    ,         =============");
        System.out.println("name  :"+jedis.getSet("name", "heqing-new"));
        System.out.println("name  :"+jedis.get("name"));
    }

    /** 
     * mset,mget    ,  ,        
     *    :
     * jedis.set("name","ssss"); 
     * jedis.set("jarorwar","xxxx"); 
     */ 
//    @Test
    public void testFind() {
        System.out.println("=============    =============");
        System.out.println("  name       :"+jedis.getrange("name", 3, 5)); 

        System.out.println("============= , , (  )=============");
        Set keys = jedis.keys("*"); 
        System.out.println("     name,age     :"+jedis.mset("name","heqing","age","26"));  
        System.out.println("     name,age      :"+jedis.mget("name","age"));
        keys = jedis.keys("*"); 
        System.out.println("---->  "+keys.size()+"   ");
        System.out.println("     name,age:"+jedis.del(new String[]{"name","age"}));
        System.out.println("     name,age      :"+jedis.mget("name","age")); 
        keys = jedis.keys("*"); 
        System.out.println("---->  "+keys.size()+"   ");
    }

//    @Test
    public void testDelete() {
        System.out.println("============= =============");  
        System.out.println("  name   :"+jedis.del("name"));  
        System.out.println("  name     :"+jedis.get("name"));
        Set keys = jedis.keys("*"); 
        System.out.println("  "+keys.size()+"   ");

        System.out.println("=============           =============");
        //   key    ,      
        System.out.println("  age,        2 "+jedis.setex("age", 2, "27")); 
        System.out.println("  age    :"+jedis.get("age")); 
        try{ 
            Thread.sleep(3000); 
        } 
        catch (InterruptedException e){ 
            e.printStackTrace();
        } 
        System.out.println("3   ,  age    :"+jedis.get("age"));
    }

}
操作リスト(List)
public class TestList {

    private Jedis jedis; //         ,        

    @Before
    public void setup() {
      jedis = RedisUtil.getJedis();
    }

    /**
     * Lpush                 (   )。
     *           key    ,             LPUSH   。   key           ,      
     * Rpush                    (   )。 
     * lrange           key,        ,        ,jedis.llen     -1        
     **/
    @Test
    public void testAdd() {
        System.out.println("============= =============");
        jedis.lpush("java","1");  
        jedis.lpush("java","2");  
        jedis.lpush("java","3"); 
        System.out.println("    -java:"+jedis.lrange("java", 0, -1));
        jedis.rpush("j2ee","test1");  
        jedis.rpush("j2ee","test2");  
        jedis.rpush("j2ee","test3"); 
        System.out.println("    -j2ee:"+jedis.lrange("j2ee", 0, -1));
    }

//    @Test
    public void testUpdate() {
        System.out.println("============= =============");
        System.out.println("j2ee   ---->"+jedis.lrange("j2ee", 0, -1));
        //             
        jedis.lset("j2ee", 0, "test0"); 
        System.out.println("j2ee   ---->"+jedis.lrange("j2ee", 0, -1));
    }

//    @Test
    public void testFind() {
        System.out.println("============= =============");
        System.out.println("    -java:"+jedis.lrange("java", 0, -1));
        //      
        System.out.println("java   :"+jedis.llen("java"));
    }

    /*
     * list             alpha,     SortingParams,      sort("list"),
     *    "ERR One or more scores can't be converted into double"
     * 
     *                limit       ,     offset count    。
     *   offset:          ,     。count:    offset        ,        。
     * sort           ,            ,      sort      alpha   。
     * ace             。      desc:             
     * lrange   :  start     ,end      ;-1        ,-2         
     * lindex            
     */
//    @Test
    public void testOrder() {
        System.out.println("=============  =============");
        System.out.println("Java    :"+jedis.lrange("java", 0, -1));
        SortingParams sortingParameters = new SortingParams();
        sortingParameters.alpha();
        sortingParameters.limit(1, -1);
        sortingParameters.desc();
        System.out.println("        :"+jedis.sort("java",sortingParameters)); 
        System.out.println("        -java:"+jedis.sort("java"));
        System.out.println("  -        :"+jedis.lrange("java", 1, -1));
        System.out.println("     1   :"+jedis.lindex("java", 1)+"
"
); } /** * lrem COUNT , VALUE 。 * count>0: ,count<0: ,count = 0: VALUE * Ltrim , 。 * 0 , 1 -1 , -2 * lpop , key **/ // @Test public void testDelete(){ System.out.println("============= ============="); System.out.println(" -j2ee:"+jedis.lrange("j2ee", 0, -1)); // , ( ), add , System.out.println(" -java:"+jedis.lrem("j2ee", 1, "test0")); System.out.println(" -java:"+jedis.lrange("j2ee", 0, -1)); // System.out.println(" 0-1 :"+jedis.ltrim("j2ee", 0, 1)); System.out.println(" -java:"+jedis.lrange("j2ee", 0, -1)); // System.out.println(" :"+jedis.lpop("j2ee")); System.out.println(" -java:"+jedis.lrange("j2ee", 0, -1)); // key System.out.println(" j2ee :"+jedis.del("j2ee")); } }
操作セット(セット)
public class TestSet {

    private Jedis jedis; //         ,        

    @Before
    public void setup() {
      jedis = RedisUtil.getJedis();
    }

//    @Test
    public void testAdd() {
        System.out.println("============= =============");
        System.out.println(" user       name:"+jedis.sadd("user", "name")); 
        System.out.println(" user       age:"+jedis.sadd("user", "age"));
        System.out.println(" user       age:"+jedis.sadd("user", "qq"));
        System.out.println("  user        :"+jedis.smembers("user")); 
    }

//    @Test  
    public void testFind() {
        System.out.println("============= =============");
        System.out.println("  name     user :"+jedis.sismember("user", "name"));
        System.out.println("  who     user :"+jedis.sismember("user", "who"));
        System.out.println("      sets      :");
        Set set = jedis.smembers("user");   
        Iterator it=set.iterator() ;   
        while(it.hasNext()){   
            Object obj=it.next();   
            System.out.println(obj);   
        }
        System.out.println("    key        :"+jedis.srandmember("user"));
        System.out.println("         :"+jedis.scard("user"));
    }

//  @Test  
    public void testSet(){  
        System.out.println("============= =============");
        System.out.println("   :"+jedis.smembers("user")); 
        System.out.println("  user     qq:"+jedis.srem("user", "qq"));
        System.out.println("  qq :"+jedis.smembers("user"));
        System.out.println("  user   :"+jedis.del("user"));  
        System.out.println("   :"+jedis.smembers("user"));
    }  

    @Test
    public void testOperation() {
        System.out.println("=============    =============");
        System.out.println("user1     name:"+jedis.sadd("user1", "name")); 
        System.out.println("user1     age:"+jedis.sadd("user1", "age")); 
        System.out.println("user1     qq:"+jedis.sadd("user1", "qq")); 
        System.out.println("user2     name:"+jedis.sadd("user2", "name")); 
        System.out.println("user2     age:"+jedis.sadd("user2", "age")); 
        System.out.println("user2     e_nail:"+jedis.sadd("user2", "e_nail"));
        System.out.println("  user1        :"+jedis.smembers("user1"));
        System.out.println("  user2        :"+jedis.smembers("user2"));
        System.out.println("user1 user2  :"+jedis.sinter("user1", "user2"));
        System.out.println("user1 user2  :"+jedis.sunion("user1", "user2"));
        System.out.println("user1 user2  :"+jedis.sdiff("user1", "user2"));
        System.out.println("user2 user1  :"+jedis.sdiff("user2", "user1"));
    }

}
操作規則集合(sorted set)
private Jedis jedis; //         ,        

    @Before
    public void setup() {
      jedis = RedisUtil.getJedis();
    }

//    @Test
    public void testAdd() {
        System.out.println("============= =============");
        System.out.println("user     name:"+jedis.zadd("user", 2.0, "name")); 
        System.out.println("user     age:"+jedis.zadd("user", 8.0, "age")); 
        System.out.println("user     qq:"+jedis.zadd("user", 5.0, "qq")); 
        System.out.println("user        :"+jedis.zrange("user", 0, -1));//             
    }

//    @Test
    public void testFind() {
        System.out.println("============= =============");
        System.out.println("user        :"+jedis.zrange("user", 0, -1));//             
        System.out.println("  zset         :"+jedis.zcard("user"));
        System.out.println("  zset          (1.0——5.0),     :"+jedis.zcount("user", 1.0, 5.0));
        System.out.println("  zset   user   :"+jedis.zscore("user", "qq"));
        System.out.println("    1 2       :"+jedis.zrange("user", 1, 2));
    }

    @Test  
    public void testSortedSet(){ 
        System.out.println("============= =============");
        System.out.println("user     age:"+jedis.zrem("user", "age"));
        System.out.println("user        :"+jedis.zrange("user", 0, -1));
        //   key 
        System.out.println("  user   :"+jedis.del("user")); 
    }
}
操作Map
public class TestMap {

    private Jedis jedis; //         ,        

    @Before
    public void setup() {
      jedis = RedisUtil.getJedis();
    }

//    @Test
    public void testAddAndUpdate() {
        System.out.println("=============   ============="); 
        Map map = new HashMap();
        map.put("name", "heqing");
        map.put("age", "27");
        map.put("qq", "975656343");
        jedis.hmset("user",map);
        Iterator iter=jedis.hkeys("user").iterator();  
        while (iter.hasNext()){  
            String key = iter.next();  
            System.out.println("user     :"+key+", :"+jedis.hmget("user",key));
        } 
    }

//    @Test
    public void testFind() {
        System.out.println("============= =============");
        System.out.println("user       :"+jedis.hkeys("user"));//  map      key  
        System.out.println("user       :"+jedis.hvals("user"));//  map      value
        //  user  name,    :[minxr]-->          List  
        //        redis map   key,       map     key,   key     ,       
        List rsmap = jedis.hmget("user", "name", "age", "qq");
        System.out.println("user   name,age,qq:"+rsmap);
    }

    @Test
    public void testDelete() {  
        System.out.println("============= =============");  
        System.out.println("      :"+jedis.hmget("user", "age"));
        jedis.hdel("user","age");
        System.out.println("      :"+jedis.hmget("user", "age")); //     ,      null  
        System.out.println("user      :"+jedis.hlen("user")); //  key user          2 
        System.out.println("    key user:"+jedis.exists("user"));//    key user      true 
        System.out.println("  user   :"+jedis.del("user")); 
        System.out.println("    key user:"+jedis.exists("user"));//    key user      true 
    }
}
操作HashMap
public class TestHashMap {

    private Jedis jedis; //         ,        

    @Before
    public void setup() {
      jedis = RedisUtil.getJedis();
    }

//    @Test
    public void testAdd() {
        System.out.println("============= =============");
        System.out.println("user   name heqing   :"+jedis.hset("user", "name", "heqing")); 
        System.out.println("user   qq 975656343   :"+jedis.hset("user", "qq", "975656343"));
        System.out.println("  age 26      :"+jedis.hincrBy("user", "age", 26));
        System.out.println("user     :"+jedis.hvals("user"));
    }

//    @Test
    public void testUpdate() {
        System.out.println("============= =============");
        System.out.println("   user     :"+jedis.hvals("user"));
        System.out.println("age        100:"+jedis.hincrBy("user", "age", 100l));
        System.out.println("   user     :"+jedis.hvals("user"));
    }

//    @Test
    public void testFind() {
        System.out.println("============= =============");
        System.out.println("  name    :"+jedis.hexists("user", "name"));
        System.out.println("  name    :"+jedis.hget("user", "name"));
        System.out.println("    age qq    :"+jedis.hmget("user", "age", "qq")); 
        System.out.println("  user    key:"+jedis.hkeys("user"));
        System.out.println("  user    value:"+jedis.hvals("user"));
    }

    @Test
    public void HashOperate() {
        System.out.println("============= =============");
        System.out.println("   user     :"+jedis.hvals("user"));
        System.out.println("user   qq   :"+jedis.hdel("user", "qq"));
        System.out.println("   qquser     :"+jedis.hvals("user"));
        System.out.println("  user   :"+jedis.del("user"));  
        System.out.println("   user     :"+jedis.hvals("user"));
    }
}