1. 程式人生 > >Jedis實現批量刪除redis cluster

Jedis實現批量刪除redis cluster

在網上找了好幾遍也沒找到可以批量刪除或者清空redis cluster的方法  

我就用jedis寫了一個

         //獲取jedis連線

         private JedisCluster jedisCluster=JedisClusterUtil.getJedisCluster();

         //@param pattern  獲取key的字首  全是是 * 

 public static TreeSet<String> keys(String pattern){  
        

       TreeSet<String> keys = new TreeSet<>();  
        //獲取所有的節點

               Map<String, JedisPool> clusterNodes = jedisCluster.getClusterNodes();  
       //遍歷節點 獲取所有符合條件的KEY 

               for(String k : clusterNodes.keySet()){  
           logger.debug("Getting keys from: {}", k);  
           JedisPool jp = clusterNodes.get(k);  
           Jedis connection = jp.getResource();  
           try {  
               keys.addAll(connection.keys(pattern));  
           } catch(Exception e){  
               logger.error("Getting keys error: {}", e);  
           } finally{  
               logger.debug("Connection closed.");  
               connection.close();//用完一定要close這個連結!!!  
           }  
       }  
       logger.debug("Keys gotten!");  
       return keys;  
  }  

          //main方法

 public static void main(String[] args ){
 TreeSet<String> keys=keys("*");

 //遍歷key  進行刪除  可以用多執行緒
 for(String key:keys){

                          jedisCluster.del(key);
 System.out.println(key);
 }
 }